关于protected的一点困惑
Protected : 在包内相当于friendly, 但可被任意地方的子类调用
package unit06.exercises.package1;
public class ForTest15 {
protected void tttt(){
}
}
import unit06.exercises.package1.*;
public class Test15 extends ForTest15{
void ttttttt(){
ForTest15 ft15 = new ForTest15();
// ft15.tttt();
}
public static void main(String[] args) {
}
}
被注释掉的一行发生编译错误,既然protected在子类中可以被访问,那为什么会出现错误呢?
其实实际中大家都不会这么做,但是我就是想搞清楚protected的机制,希望好心人能清楚的帮我解释一下,谢谢
------解决方案--------------------好像发了两遍
void ttttttt(){
tttt();
}
是可以的
但是
void ttttttt(){
ForTest15 ft15 = new ForTest15();
ft15.tttt();
}
是不可以的
------解决方案--------------------ft15.tttt()这样只能调用ft15对象的public的方法,不能调用protected的方法,因为ft15对象可以在任何类里面构造。
------解决方案--------------------学习
------解决方案--------------------第二个加上package unit06.exercises.package1;
就对了 ,protected的不可包外继承
------解决方案--------------------楼上正解
------解决方案--------------------楼上正解,建议个加分,看到你的签名,呵呵
protected也赋予package权限,也就是说package里的其它类也可以访问protected元素
(摘自thinking in java chap5)