您的位置:首页 > 编程语言 > Python开发

【python】类的继承和多态

2016-08-31 16:36 387 查看
比如,我们已经编写了一个名为
Animal
的class,有一个
run()
方法可以直接打印:

class Animal(object):
def run(self):
print 'Animal is running...'


  

当我们需要编写Dog和Cat类时,就可以直接从Animal类继承:

class Dog(Animal):
pass

class Cat(Animal):
pass


  

对于Dog来说,Animal就是它的父类,对于Animal来说,Dog就是它的子类。Cat和Dog类似。

继承有什么好处?最大的好处是子类获得了父类的全部功能。由于Animial实现了
run()
方法,因此,Dog和Cat作为它的子类,什么事也没干,就自动拥有了
run()
方法:

dog = Dog()
dog.run()

cat = Cat()
cat.run()


  

运行结果如下:

Animal is running...
Animal is running...

当然,也可以对子类增加一些方法,比如Dog类:

class Dog(Animal):
def run(self):
print 'Dog is running...'
def eat(self):
print 'Eating meat...'


  

继承的第二个好处需要我们对代码做一点改进。你看到了,无论是Dog还是Cat,它们
run()
的时候,显示的都是
Animal is running...
,符合逻辑的做法是分别显示
Dog is running...
Cat is running...
,因此,对Dog和Cat类改进如下:

class Dog(Animal):
def run(self):
print 'Dog is running...'

class Cat(Animal):
def run(self):
print 'Cat is running...'


  

再次运行,结果如下:

Dog is running...
Cat is running...

当子类和父类都存在相同的
run()
方法时,我们说,子类的
run()
覆盖了父类的
run()
,在代码运行的时候,总是会调用子类的
run()
。这样,我们就获得了继承的另一个好处:多态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: