我正在阅读有关 Java 7 认证的 OCA 和 OCP 的书,我正在尝试使用 Java 8 进行本书的练习,我注意到一些连线的东西。
我有 Class1 类如下:
package cert;
public class Class1{
protected static void importantMethod(){
System.out.println("importantMethod() method of Class1 class TEST \n");
}
如您所见, importantMethod()方法的修饰符是受保护的静态的,并且包是cert,正如书中所解释的,我希望另一个包中的另一个类,在我的例子中为Class2,如下所示,可以访问importantMethod()方法只能通过继承,但事实证明,从Class2我也可以通过Class1的实例访问importantMethod()方法。
2 类:
package exam;
import cert.Class1;
class Class2 extends Class1 {
public static void main(String[] args) {
Class1 c1 = new Class1();
c1.importantMethod();
}
}
如果我从Class1中删除static修饰符,它会在尝试从Class2访问importantMethod()方法时给出预期的错误:
exam\Class2.java:7: error: importantMethod() has protected access in Class1
c1.importantMethod();
^
我的问题是,非访问修饰符会改变类成员的访问级别吗?