一尘不染

java受保护的方法可访问性

java

在下面的代码中,Consumer类可以访问Parent类的受保护方法。由于Parent和Consumer类之间没有关系,这怎么可能。

class Parent {
    public void method1(){
        System.out.println("PUBLIC METHOD");
    }
    private void method2(){
        System.out.println("PRIVATE METHOD");
    }
    protected void method3(){
        System.out.println("PROTECTED METHOD");
    }
}

public class Consumer {
    public static void main(String[] args){
        Parent parentObj = new Parent();
        parentObj.method1();
        //parentObj.method2();
        parentObj.method3();
    }
}

谢谢


阅读 267

收藏
2020-12-03

共1个答案

一尘不染

protected表示:相同的包或通过继承。由于您的课程都在default package(实际上不建议使用),因此protected可以进行访问。顺便说一句:如果您尝试测试Java访问控制,则会忘记default accessdefault access= no修饰符= package private)。

private 另一方面,访问是指:从该特定类(以及仍然是主机类成员的非静态内部类)之外的任何地方进行访问。

2020-12-03