package xxx.yyy;
public class ParentClass {
protected void doPrint(){
System.out.println("Parent.....");
}
}
package aaa.bbb;
import cathy.inner.ParentClass;
public class Child extends ParentClass {
public void getName(){
System.out.println("Child....");
}
}
public class ParentClass {
protected void doPrint(){
System.out.println("Parent.....");
}
}
package aaa.bbb;
import cathy.inner.ParentClass;
public class Child extends ParentClass {
public void getName(){
System.out.println("Child....");
}
}
包aaa.bbb中的客户端无法使用新的Child()。doPrint()。但如果子覆盖,则客户端可以使用新的Child()。doPrint()。
这对我来说似乎很奇怪,因为在覆盖期间我们无法将访问修饰符更改为更具限制性,但这种情况下继承的方法似乎是私有的。
为什么要以这种方式实施?
答案 0 :(得分:2)
Super
类方法的访问修饰符为protected
,并且可以使用class
,package
和subclass
访问该方法。
因此无法在子类的包中访问它。
当您使用subclass
访问修饰符覆盖protected
中的特定方法时,可以访问它,因为protected
方法可以在同一package
下访问。
答案 1 :(得分:0)
受保护的只允许子类访问方法...... java的一种限制并不奇怪......