我在Java中有一个“私有静态”嵌套类。访问修饰符对于此类中的字段和方法有何意义?我已尝试过公开和私有,但对我的申请没有影响。
public class MyList<T>{
private static class Node{ // List node
private Object item;
private Node next;
private Node prev;
private Node(Node next){
this.next = next;
}
private static Node doStuff(){}
}
}
答案 0 :(得分:11)
因为它是一个嵌套类,所以Node
中的所有内容都可以由MyList<T>
访问,而不管访问修饰符;因为它是一个私有嵌套类,所以Node
中首先声明的内容都不会在MyList<T>
之外显示。
因此,访问修饰符可能重要的一种情况是覆盖超类方法的方法(例如toString()
)。您无法降低重写方法的可见性。必须始终将toString()
声明为public才能编译该类。
还应该注意,当外部类访问私有成员时,编译器会创建一个合成方法(我相信包范围)。此合成方法仅在嵌套类的.class文件中可见。
答案 1 :(得分:5)