-1

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....");
    }
}

包 aaa.bbb 中的客户端不能使用 new Child().doPrint()。但是如果孩子覆盖,那么客户端可以使用 new Child().doPrint()。这对我来说似乎很奇怪,因为在覆盖期间我们无法将访问修饰符更改为更具限制性,但这种情况下继承的方法似乎是私有的。

为什么以这种方式实施?

4

2 回答 2

2

Super类方法的访问修饰符 is并且protected它声明方法可以使用 inclass和. packagesubclass

所以它在子类的包中是不可访问的

subclass当您使用访问修饰符覆盖该特定方法时,protected它将可以访问,因为protected方法可以在 same 下访问package

于 2013-01-15T05:18:38.727 回答
0

受保护的将只允许子类访问方法......这并不奇怪,它是java具有的一种限制......

于 2013-01-15T05:05:06.813 回答