Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当子类重写受保护的成员时,该成员就可以访问。操作人员_Java_Core - Fatal编程技术网

Java 当子类重写受保护的成员时,该成员就可以访问。操作人员

Java 当子类重写受保护的成员时,该成员就可以访问。操作人员,java,core,Java,Core,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(

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()。但是,如果child重写,则客户端可以使用new child().doPrint()。 这对我来说似乎很奇怪,因为在重写期间,我们不能将访问修饰符更改为更严格的,但在这种情况下,继承的方法似乎是私有的


为什么要以这种方式实现它?

Protected将只允许子类访问方法。。。这并不奇怪,因为java有一种类型的限制…

Super
类方法的访问修饰符是
受保护的
,它声明方法可以通过
子类
访问

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


当您使用
受保护的
访问修饰符覆盖
子类
中的特定方法时,它将可以访问,因为
受保护的
方法可以在相同的
下访问

它定义了一个新的方法,但它只针对一个样本。