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
Python中抽象方法的案例

相关文章: