当将内部类向上转型为其基类,尤其是转型为一个接口的时候,内部类就有了用武之地,(从实现了某个接口的对象,得到对此接口的引用,与向上转型为这个对象的基类,实质上效果是一样的)这是因为此内部类——某个接口的实现——能够完全不可见,并且不可用。所得到的只是指向基类或接口的引用,所以能够很方便的隐藏实现细节。
可以很方便的访问外部类信息。一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象。所以可以认为内部类提供了某个进入其外围类的窗口。
内部类实现一个接口与外围类实现有什么区别,后者不能总能享用到接口带来的方便,有时需要用到接口的实现。所以,使用内部类最吸引人的原因是:每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。内部类使得多重继承的解决方案变得完整。有效地实现了“多重继承”