1. 可以将只在一起使用的类从逻辑进行组合。如果一个类仅仅对另外一个类有用,那么就可以将这个类嵌入另外一个类中而使他们组合在一起。通过这种方式,可以使得自己的包更精简。
2. 提高封装性。两个top level类A和B(B只需访问A中的私有成员),B放入A中,实现B访问A的私有成员,同时实现B和外界隔离。
3. 变相多继承。在内部类定义多个继承其他类的内部类,并在外部类中定义各内部类对象,就变相实现了多继承。
内部类初始化
1. static 内部类
class Outer {
static class Inner {
}
}
Outer.Inner instance = new Outer.Inner();
2. 非static内部类
class Outer {
class Inner {
}
}
Outer outer = new Outer();
Inner inner = outer.new Inner();
非static内部类依赖于外部类,非static内部类对象依赖于外部类对象的存在,static内部类对象不依赖于外部类对象而只依赖于外部类。