利用抽象数据类型讲数据和基于数据的操作封装到一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。
优点:
继承实现了 IS-A关系,例如 Cat和Animal就是一种IS-A关系,因此Cat可以继承自Animal 从而获得Amimal 非private属性和方法。
继承应该遵循里氏替换原则,子类对象必须能够替换掉所有父类对象。
Cat 可以当做 Animal 来使用,也就是说可以使用 Animal 引用 Cat 对象。父类引用指向子类对象称为 向上转型 。
多态分为编译时多态和运行时多态
运行时多态有三种条件