1,位于一个类的内部任何位置,不允许同一个包内的其他类访问。
2,内部类成员可以访问外部类的私有成员,可是外部类不可以访问内部类的细节。,
3,内部类的修饰范围小于或者等于外部类
4,内部类作为类的一种成员,局部内部类跟匿名内部类则不是类成员。
注意:内部类不管是什么类型,遵循的规则跟普通类是一样的。在外部类中使用内部类跟平时一样,在外部类意外使用,除了注意范围之外
1,生成内部类对象的不同:Out..In in = new Out().new In();因为要生成内部类的对象必须先创建外部类的对象。即:
Out out = new Out();
Out.In in ;
in = out .new In();
2,创建内部类子类对象的时候同理out.super();此时在子类的构造函数里面要保留外部类的对象。其子类不一定是内部类
把外部类看做是内部类的包空间。
5.非静态内部类:依存在外部类的对象中。访问内部类成员的时候注意写法,成员由本身的对象调用。
静态成员不可以访问非静态成员
非静态内部类里面不可以定义静态成员:内部类的初始化跟普通类一样,如果在非静态内部类里面静态成员无法初始化。
6,静态内部类:依存在外部类的类中。属于类本身,
静态内部类中,不管是静态成员还是非静态的,都不可以访问外部类非静态成员,只可以访问静态成员
7,局部内部类只可以在当前方法中使用。
8,匿名内部类马上被创建对象,马上会消失,因此不可以复用
没有构造函数