为什么需要内部类?

典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类
的对象。所以你可以认为内部类提供了某种进入其外围类的窗口。
 
内部类必须要回答一个问题是:如果我只是需要一个对接口的引用,为什么我不通过外围
类实现那个接口呢?答案是:“如果这能满足你的需求,那么你就应该这样做。”
么内
部类实现一个接口与外围类实现这个接口有什么区别呢?答案是你不是总能享用到接口带
来的方便,有时你需要与接口的实现进行交互,所以使用内部类最吸引人的原因是:
 
每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承
了某个(接口的)实现,对于内部类都没有影响。
 
如果没有内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很
难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,
而内部类有效地实现了“多重继承”。也就是说,内部类允许你继承多个非接口类型(译
注:类或抽象类)。
 
为了看到更多的细节,考虑下面这种情形,你必须在一个类中以某种方式实现两个接口。
由于接口的灵活性,你有两种选择:只使用单一的一个类,或者使用一个内部类:
 

 

1.  内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对
象的信息相互独立。


2.  在单个外围类中,你可以让多个内部类以不同的方式实现同一个接口,或继
承同一个类。


3.  创建内部类对象的时刻并不依赖于外围类对象的创建。


4.  内部类并没有令人迷惑的“is-a”关系;它就是一个独立的实体。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章