儿童班无法受到保护

时间:2015-07-15 09:13:27

标签: java class inheritance protected access-specifier

import java.util.*;

public class NewTreeSet2{
    void count(){
        for (int x=0; x<7; x++,x++){
            System.out.print(" " + x);
        }
    }
}
protected class NewTreeSet extends NewTreeSet2{
    public static void main(String [] args){
        NewTreeSet2 t = new NewTreeSet2();
        t.count();
    }
}

在这里,我无法将NewTreeSet子类视为受保护。为什么是这样?我不想做任何事情,这只是为了理解访问说明符。

1 个答案:

答案 0 :(得分:3)

public是唯一可以显式应用于Java中的顶级class的访问修饰符。在类的情况下,protected修饰符只能应用于内部类。

Java语言规范的

Section 8.1.1说:

  

访问修饰符protected和private仅适用于直接封闭类声明中的成员类

那么为什么不能将顶级课程标记为protectedprotectedJava访问修饰符的目的是添加对类成员访问的限制。由于顶级类不是任何类的成员,因此protected访问修饰符对顶级类没有意义。内部类可以标记为protected,因为它们确实是类的成员。同样的规则也适用于private