在com.fzq.study1包中父类:
package com.fzq.study1;
public class A {
public int intPublic;
int intFriendly;
protected int intProtected;
private int intPrivate;
static public int intPublicStactic;
static int intFriendlyStactic;
static protected int intProtectedStactic;
static private int intPrivateStactic;
public A() {
}
/**
* @param args
*/
public static void main(String[] args) {
}
public void fucPublic(){}
void fucFriendly(){}
protected void fucProtected(){}
private void fucPrivate(){}
public static void fucPublicStatic(){}
static void fucFriendlyStatic(){}
protected static void fucProtectedStatic(){}
private static void fucPprivateStatic(){}
}
在com.fzq.study2包中的子类:
package com.fzq.study2;
import com.fzq.study1.*;
public class E extends A{
public E() {
super.intProtected = 3;
super.intPublic = 6;
super.intProtectedStactic = 7;
super.intPublicStactic = 9;
super.fucProtected();
super.fucPublic();
super.fucProtectedStatic();
super.fucPublicStatic();
}
/**
* @param args
*/
public static void main(String[] args) {
A a = new A();
a.intPublic = 4;
//a.intProtected = 6; 不可以这样写,会编译报错
a.intProtectedStactic = 4;可以这样写,不会报错
a.intPublicStactic = 5;
a.fucPublic();
a.fucProtectedStatic();
a.fucPublicStatic();
E e = new E();
e.intProtected = 5;
e.intPublic = 6;
e.intProtectedStactic = 6;
e.intPublicStactic = 7;
e.fucProtected();
e.fucPublic();
e.fucProtectedStatic();
e.fucPublicStatic();
}
}
我想问的问题是:在上述包结构下,为什么在子类E的main()方法中父类对象a不能访问它的protected属性intProtected,而可以访问Stactic Protected属性intProtectedStactic。