(1)内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象的信息相互独立。
(2)在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
(3)如果拥有的是抽象的类或具体的类,而不是接口,那只能使用内部类才能实现多重继承,下面是个简单的例子:
class D{}
abstract class E{}
class Z extends D
{
E makeE(){ return new E(); }
}
public class MutiImplementation
{
static void takesD(D d){}
static void takesE(E e){}
public static void main(String[] args)
{
Z z=new Z();
takesD(z);
takeE(z.makeE());
}
}
(4)创建内部类对象的时刻并不依赖于外围类对象的创建。
(5)内部类并没有令人迷惑的“is-a”关系;它就是一个独立的实体。