小编Arb*_*xha的帖子

static修饰符是否会更改java中类成员的访问级别?

我正在阅读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)

java access-modifiers ocpjp

6
推荐指数
1
解决办法
186
查看次数

标签 统计

access-modifiers ×1

java ×1

ocpjp ×1