在Java中的私有静态嵌套类中访问修饰符

时间:2010-11-02 06:01:56

标签: java class methods static access-modifiers

我在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(){}
    }
}

2 个答案:

答案 0 :(得分:11)

因为它是一个嵌套类,所以Node中的所有内容都可以由MyList<T>访问,而不管访问修饰符;因为它是一个私有嵌套类,所以Node中首先声明的内容都不会在MyList<T>之外显示。

因此,访问修饰符可能重要的一种情况是覆盖超类方法的方法(例如toString())。您无法降低重写方法的可见性。必须始终将toString()声明为public才能编译该类。

还应该注意,当外部类访问私有成员时,编译器会创建一个合成方法(我相信包范围)。此合成方法仅在嵌套类的.class文件中可见。

答案 1 :(得分:5)

两种嵌套类:1。静态(嵌套类)和2.非静态(也称为内部类)

现在,Outer类MyList可以访问内部类Node的所有成员,但实际上您使用类Node成员的访问说明符(嵌套类) )当你想要一些外部类访问它时的限制。

有趣的内容为:Source1Source2