为什么我可以在doStuff()下面的主要方法中访问方法?既然doStuff()受到保护,我希望只能TestClassImplementation访问它.
public abstract class AbstractTestClass {
protected void doStuff()
{
System.out.println("doing stuff ...");
}
}
public class TestClassImplementation extends AbstractTestClass{
}
public class MyProgram {
public static void main(String[] args) {
TestClassImplementation test = new TestClassImplementation();
test.doStuff(); //why can I access the doStuff() Method here?
}
}
Run Code Online (Sandbox Code Playgroud)
Lui*_*oza 11
看起来MyProgram班级与你的班级相同AbstractTestClass.如果是这样,那么它可以访问同一包中的类protected和public成员.
涵盖在Java教程中:
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,只需移动AbstractTestClass到另一个包.与其他相关课程相似.
更多信息: