java子类的对象为什么不能访问父类的protected变量?
相关代码
package Chapter6.Chapter6A;
// 父类代码
public class Chapter6exp {
int age = 5;
protected String name = "zzz";
private void f() {};
public String city = "QD";
}
子类代码, 位于不同包内
package Chapter6;
import Chapter6.Chapter6A.Chapter6exp;
class C extends Chapter6exp {
C() {
// this.city;
// this.name;
}
}
public class Human {
public static void main(String args[]) {
C c = new C();
// c.city; 只能取到city(public)
}
}
肯定是可以的. 你这不是一个语句啊, 语法错误. 作左值, 作右值都是可以的.
你的问题应该是: 为什么子类没有把父类的protected字段暴露出去. protected是说, 该字段可以在父类, 父类同包内的类, 以及子类中访问, 注意是"子类中", 也就是子类的方法里. 对子类的使用者来说, 又要通过包访问规则来访问子类的字段了. 而父类的protected字段, 此时是不会暴露给子类的使用者的.