
上QQ阅读APP看书,第一时间看更新
1.9 继承
继承允许一个类继承另一个类的属性和方法。我们可以通过提取另一个类的公共属性和行为来创建新类。
面向对象程序设计中的一个主要设计问题就是识别多个类的共性。例如,假设你有一个Dog(狗)类和一个Cat(猫)类,这两个类都有一个属性来表示眼睛颜色。在过程化模型中,Dog和Cat的代码中都会包含这个属性。在面向对象设计中,可以将颜色属性上移到一个名为Mammal(哺乳动物)的类中。该类也会包含一些其他的公共属性和方法。在本例中,Dog类和Cat类都继承自Mammal类,如图1.14所示。

图1.14 Mammal继承体系图
Dog和Cat类都继承自Mammal类。这意味着Dog类有以下属性:

同样,Dog对象有以下方法:

当Dog或Cat对象被实例化时,它包含了自身类的所有东西,也包含了从父类获取到的东西。即Dog拥有自身类定义的所有属性,也包含了从Mammal类继承过来的属性。
行为
需要注意的是我们使用接口描述行为,通过直接继承来获取继承的属性。通过这种方式,将行为从数据中提取出来。