面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

例如:

  猫可以:喵喵叫、吃、喝、拉、撒

  狗可以:汪汪叫、吃、喝、拉、撒

如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能,如下所示:

伪代码

class 猫:

    def 喵喵叫(self):
print '喵喵叫' def 吃(self):
# do something def 喝(self):
# do something def 拉(self):
# do something def 撒(self):
# do something class 狗: def 汪汪叫(self):
print '喵喵叫' def 吃(self):
# do something def 喝(self):
# do something def 拉(self):
# do something def 撒(self):
# do something

述代码不难看出,吃、喝、拉、撒是猫和狗都具有的功能,而我们却分别的猫和狗的类中编写了两次。如果使用 继承 的思想,如下实现:

  动物:吃、喝、拉、撒

     猫:喵喵叫(猫继承动物的功能)

     狗:汪汪叫(狗继承动物的功能)

伪代码

class 动物:

    def 吃(self):
# do something def 喝(self):
# do something def 拉(self):
# do something def 撒(self):
# do something # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
class 猫(动物): def 喵喵叫(self):
print '喵喵叫' # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
class 狗(动物): def 汪汪叫(self):
print '喵喵叫'
代码实例

class Animal:

    def eat(self):
print "%s 吃 " %self.name def drink(self):
print "%s 喝 " %self.name def shit(self):
print "%s 拉 " %self.name def pee(self):
print "%s 撒 " %self.name class Cat(Animal): def __init__(self, name):
self.name = name
self.breed = '猫' def cry(self):
print '喵喵叫' class Dog(Animal): def __init__(self, name):
self.name = name
self.breed = '狗' def cry(self):
print '汪汪叫' # ######### 执行 ######### c1 = Cat('小白家的小黑猫')
c1.eat() c2 = Cat('小黑的小白猫')
c2.drink() d1 = Dog('胖子家的小瘦狗')
d1.eat()

学习了继承的写法之后,我们用代码来是上述阿猫阿狗的功能:

代码实例

 
class Animal:
 
    def eat(self):
        print "%s 吃 " %self.name
 
    def drink(self):
        print "%s 喝 " %self.name
 
    def shit(self):
        print "%s 拉 " %self.name
 
    def pee(self):
        print "%s 撒 " %self.name
 
 
class Cat(Animal):
 
    def __init__(self, name):
        self.name = name
        self.breed = '猫'
 
    def cry(self):
        print '喵喵叫'
 
class Dog(Animal):
     
    def __init__(self, name):
        self.name = name
        self.breed = '狗'
         
    def cry(self):
        print '汪汪叫'
         
 
# ######### 执行 #########
 
c1 = Cat('小白家的小黑猫')
c1.eat()
 
c2 = Cat('小黑的小白猫')
c2.drink()
 
d1 = Dog('胖子家的小瘦狗')
d1.eat()

https://www.cnblogs.com/zunchang/p/7965685.html

最新文章

  1. iOS开发---有用的网址(持续更新)
  2. wechat开发
  3. Ad-Hoc命令不熟悉的选项
  4. yii 隐藏index.php的步骤
  5. wpa_supplicant是什么?
  6. Linux的启动流程
  7. 前端:JS获取单击按钮单元格所在行的信息
  8. ASP.NET Core 一步步搭建个人网站(3)_菜单管理
  9. Android图表库MPAndroidChart(十四)——在ListView种使用相同的图表
  10. 使用Server Trigger保护重要的数据库对象
  11. 更新本地git仓库的远程地址(remote地址)
  12. (大数 求余) Large Division Light OJ 1214
  13. MySQL 获得当前日期时间 函数【转】
  14. 词云-wordcloud
  15. iOS 给UIView添加xib
  16. Xilinx Vivado的使用详细介绍(2):综合、实现、管脚分配、时钟设置、烧写
  17. [翻译] iOSSharedViewTransition
  18. [翻译] VENCalculatorInputView
  19. 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
  20. Win10安装Ubuntu16.04 双系统

热门文章

  1. ENVI提取水系并进行生态敏感性分析
  2. 用python生成你想要的任意大小文件
  3. 记一次解决关机蓝屏 | MULTIPLE_IRP_COMPLETE_REQUESTS | klflt.sys
  4. VuePress 博客之 SEO 优化(六)站长工具
  5. linux如何通过文件2,3找回文件1?
  6. oracle 11g生成ASH报告操作过程
  7. JS 邮箱的验证(正则)
  8. 网关中间件-Nginx(二)
  9. 深度学习工具LabelXml安装教程
  10. python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)