我有一个类的实例变量Avo,包ger1,带有protected修饰符。访问受保护的成员
package ger1;
public class Avo {
protected int i = 1;
}
然后,我有一个类排它是包GER2,扩展的AVO和访问由实例变量,到目前为止正常...
package ger2;
public class Pai extends Avo {
public Pai() {
i++
}
}
但保护成员的Kathy Sierra的书上说, ,“一旦子类继承了受保护的成员,该成员(由子类继承)对于子类之外的任何代码都是私有的,除了子类的子类之外。”
但是,如果我尝试通过类派的实例访问成员它是允许的!但是,Filho类必须与Avo相同。为什么这个?这是正常的?
package ger1;
import ger2.Pai;
public class Filho {
public Filho() {
Pai pai = new Pai();
pai.i++;
}
}
你能提供一个参考(如,一个链接或类似的东西)的书,你是什么意思?同时,为了清除访问修饰符上的问题,我推荐使用java教程http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html –
这本书是“Java认证程序员6学习指南“,作者Kathy Sierra,第36页。 – Andrey