1.
内部类就像类内部的属性一样,可以访问所在外部类的属性,包括私有属性,其实原理上是因为内部类隐式含有外部类的引用。
2. 内部类要在外部类的构造器或其他方法中new。
3. 内部类对其他的类不可见,即使是同一个包中的类。
4. 内部类是编译现象,只是编译器在编译的时候实现的各种功能,虚拟机只把它当作是普通的类处理,编译后的类名为:OuterClass$InnerClass.class
5. 局部内部类:是指在方法中定义的内部类,此类只在方法中可见,所以public、private修饰符没用,也不必写出,但它同样可以访问外部类的各种属性,以及方法中的局部属性即参数,但此参数必须申明为final,具体原因可以查询Java核心技术卷1
6. 有时候我们申明内部类仅仅是想让它存在于某一个类的内部,并不想也不需要让它获得外部类的引用,此时,内部类可以申明为静态内部类,用static关键字,当然只有内部类才可以用static关键字修饰。
例:
Class Alg{
Public staticclass inner{
}
}
7. 要在静态方法中构造内部类对象时,此内部类要申明为静态内部类。
8. 申明在接口中的内部类默认是public static 的。