传统的面向对象的特性:继承,封装,多态,其中“继承”的主要意图是代码的复用,将公共的东西放在一起,作为基类,由其他类继承。现在的观点是:基类不仅仅是包含其他类的共同部分,因该从更高层次设计基类,基类还应该提供这一类对象的公共访问接口。这种设计是基于“对象是富有一系列职责的实体”观点出发的。对于一类对象,他们应该有共同的职责,只是实现方式不同,通过在基类中定义这些接口,我们就可以实现对具体子对象的封装,真正实现面向接口编程,这大大增加了系统的灵活性。
“封装”的传统观点只是为了实现数据隐藏。但这大大限制的“封装的特性”,其实“封装”可以实现任何东西的隐藏,它可以隐藏数据,方法,类,甚至一个子系统。“封装”提供了对“多态”的支持,正是因为“多态”特性隐藏了具体的实现类,使得面向接口编程成为可能。