定义在一个类内部的类叫内部类,包含内部类的类称为外部类。
内部类可以声明public、protected、private等访问限制,
可以声明为abstract的供其他内部类或外部类继承与扩展,
或者声明为static、final的,也可以实现特定的接口。
static的内部类行为上象一个独立的类,
非static在行为上类似类的属性或方法且禁止声明static的方法。
内部类可以访问外部类的所有方法与属性,
但static的内部类只能访问外部类的静态属性与方法。
Java的设计者在内部类身上的确是专心良苦。学会使用内部类,是把握Java高级编程的一部分,它可以让你更优雅地设计你的程序结构。
为什么需要内部类?
java中的内部类和接口加在一起,可以实现多继承。
可以使某些编码根简洁。
隐藏你不想让别人知道的操作。
非静态内部类对象有着指向其外部类对象的引用
一个静态成员类,若去掉“static”关键字,就成为成员类。
package tao.test;
public class Outer {
public Outer(){
// 在内部类的外部类的构造方法中创造内部类对象
new Inner();
}
public static void fun(){
Outer out = new Outer();
Inner in = out.new Inner();
// 如果内部类被 static 修饰,则可以
// Inner in = new Inner();
}
//static class Inner{
class Inner{
public Inner(){
Outer out = new Outer();
}
public Outer getOuter(){
return Outer.this;
}
}
}