Python面向对象三要素-继承(Inheritance)
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.继承概述
1>.基本概念
前面我们学习了Python的面向对象三要素之一,封装。今天我们来学习一下继承(Inheritance)
人类和猫类都继承自动物类。
个体继承自父类,继承了父类的一部分特征,但也可以有自己的个性。
再面向对象的世界中,从父类继承,就可以直接拥有父类的属性方法,这样可以减少代码,多复用。子类可以定义自己的属性和方法。
2>.看一个不用继承的例子
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 7 class Animal: 8 def shout(self): 9 print("Animal shouts") 10 11 12 class Cat: 13 def shout(self): 14 print("Cat shouts") 15 16 17 a = Animal() 18 a.shout() 19 20 c = Cat() 21 c.shout() 22 23 24 25 #以上代码执行结果如下: 26 Animal shouts 27 Cat shouts
3>. 使用继承的方式改良上一个不用继承的案例
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 7 class Animal: 8 def __init__(self,name): 9 self._name = name 10 11 def shout(self): #定义一个通用的吃方法 12 print("{} shouts".format(self.__class__.__name__)) 13 14 @property 15 def name(self): 16 return self._name 17 18 class Cat(Animal): 19 pass 20 21 class Dog(Animal): 22 pass 23 24 a = Animal("monster") 25 a.shout() 26 27 cat = Cat("Kitty") 28 cat.shout() 29 print(cat.name) 30 31 dog = Dog("二哈") 32 dog.shout() 33 print(dog.name) 34 35 36 #以上代码执行结果如下: 37 Animal shouts 38 Cat shouts 39 Kitty 40 Dog shouts 41 二哈
1 #!/usr/bin/env python 2 #_*_conding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie 5 6 class Document: 7 def __init__(self,content): 8 self.content = content 9 10 def print(self): #基类中只定义,不实现的方法,称为“抽象方法”。在python中,如果采用这种方式定义的抽象方法,子类可以不实现,知道子类使用该方法的时候才报错。 11 """ 12 基类提供的方法可以不具体实现,因为它未必适合子类的打印,子类中需要覆盖重写。 13 """ 14 raise NotImplementedError() 15 16 class Word(Document): 17 pass 18 19 class Pdf(Document): 20 pass