对象之多态和继承,,


  多态和继承

  接下来,我们来看对象最为重要的两个方面:多态(polymorphism)和继承(inheritance)。这两个词很长很深奥,不过正是因为有这两个方面,才使得对象如此有用。我会在下面几节清楚地解释它们的含义。

  多态---同一个方法,不同的行为

  非常简单,多态是指对于不同的类,可以有同名的两个(或多个)方法。取决于这些方法分别应用到哪个类,它们可以有不同的行为。

  例如,假设你要建立一个程序做几何题,需要计算不同形状的面积,比如三角形和正方形,你可以创建两个类,如下:

  与孩子一起学编程-python教程

  Triangle类和Square类都有一个名为getArea()的方法,所以,如果分别有这两个类的实例,如下:

  与孩子一起学编程-python教程

  就可以使用getArea()分别计算它们的面积:

  与孩子一起学编程-python教程

  这两个形状都使用了方法名getArea(),不过每个形状中这个方法做的工作不同。这就是一个多态的例子。

  继承---向父母学习

  在真实的(非编程)世界中,人们可以从他们的父母或者其他亲戚那里继承一些东西。你可以继承一些特征,比如说红头发,或者可以继承像钱和财产之类的东西。

  与孩子一起学编程-python教程

  在面向对象编程中,类可以从其他类继承属性和方法,这样就有了类的整个“家族”,这个“家族”中的每个类共享相同的属性和方法,这样一来,每次向“家族”增加新成员时就不必从头开始。

  从其他类继承属性或方法的类称为派生类(derived class)或子类(subclass)。可以举一个例子来解释这个概念。

  假想我们要建立一个游戏,玩家一路上可以捡起不同的东西,比如食物、钱或衣服。可以建一个类,名为GameObject。GameObject类有name等属性(例如coin、apple或hat)和pickUp()等方法(它会把硬币增加到玩家的物品集合中)。所有游戏对象都有这些共同的方法和属性。

  然后,可以为硬币建立一个子类,Coin类从GameObject派生,它要继承GameObject的属性和方法,所以Coin类会自动有一个name属性笔pickUp()方法。Coin类还需要一个value属性(这个硬币价值多少)和一个spend()方法(可以用这个硬币去买东西)

  下面来看这些类的代码:

  与孩子一起学编程-python教程

评论关闭