我正在阅读OCA和OCP的Java 7认证书,我正在尝试用Java 8进行本书的练习,我发现有些东西是连线的.
我有Class1类如下:
package cert;
public class Class1{
protected static void importantMethod(){
System.out.println("importantMethod() method of Class1 class TEST \n");
}
Run Code Online (Sandbox Code Playgroud)
importantMethod()方法的修饰符受静态保护,并且正如您所看到的那样,包是cert,并且正如本书中所解释的那样,我希望来自另一个包的另一个类(在我的情况下,如下所示的Class2)可以访问importantMethod()方法只有通过继承,但事实证明,从Class2我也可以通过Class1的实例访问importantMethod()方法.
Class2课程:
package exam;
import cert.Class1;
class Class2 extends Class1 {
public static void main(String[] args) {
Class1 c1 = new Class1();
c1.importantMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我从Class1中删除静态修饰符,它会在尝试从Class2访问importantMethod()方法时给出预期的错误:
exam\Class2.java:7: error: importantMethod() has protected access in Class1
c1.importantMethod();
^ …Run Code Online (Sandbox Code Playgroud)