为什么使用内部类
每个内部类都能独立的继承自某个接口的实现类,跟外围类是否已经继承了某个接口的实现没有关系。
比如:假如你的外围类已经继承了某个接口的实现,并实现了接口中的方法。但你还想在这个类中以另外一种方法实现该接口。那么只能使用内部类去实现这个接口。因为内部类实现的接口跟外围类不相关。
假如你想继承两个具体的类或者抽象类,那么只有内部类才能实现多重继承。
示例如下:
class A{}
abstract class B{}
public class Demo01 extends A {
B getB(){
return new B() {};
}
}
内部类的特性
- 内部类可以有多个实例,每个实例都有自己的状态信息。并且与其外围类对象的信息相互独立。
- 在单个外围类中,可以让多个内部类以不同方式实现同一个接口,或继承同一个类。
- 创建内部类的时刻并不依赖于外围类的创建。
- 内部类没有“is-a”关系,他就是一个独立的实体。