使用super函数----增量重写普通方法和构造方法

在子类中如果重写了超类的方法,通常需要在子类方法中调用超类的同名方法,也就是说,重写超类的方法,实际上应该是一种增量的重写方式,子类方法会在超类的同名方法的基础上

做一些其他的工作。

如果在子类中要访问超类中的方法,需要使用super函数。该函数返回的对象代表超类对象,所以访问super函数返回的对象中的资源都属于超类。super函数可以不带任何参数,

也可以带两个参数,第一个参数表示当前类的继承,第2个参数需要传入self。

本例中Bird类是Animal类的子类。在Bird类的构造方法中通过super函数调用了Animal类的构造方法。在SonBird类的构造方法中通过super函数调用了Bird类的构造方法

class Animal:
def __init__(self):
print("Animal init")
class Bird(Animal):
# 为Bird类的构造方法增加一个参数(hungry)
def __init__(self,hungry):
# 调用Animal类的构造方法
super().__init__()
self.hugry=hungry
def eat(self):
if self.hugry:
print("已经吃了虫子!")
else:
print("已经超过饭了,不饿了")
b=Bird(False)
b.eat()
b.eat() class SonBird(Bird):
def __init__(self,hungry):
# 调用Bird类的构造方法,如果为super函数指定参数,第1个参数需要是当前类的类型(SonBird)
super(SonBird,self).__init__(hungry)
self.sound='向天再借500年'
def sing(self):
print(self.sound) a=SonBird(True)
a.sing()
a.eat() Animal init
已经超过饭了,不饿了
已经超过饭了,不饿了
Animal init
向天再借500年
已经吃了虫子!

最新文章

  1. [课程设计]Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计)
  2. WebApi系列~开放的CORS,跨域资源访问对所有人开放
  3. [Android Tips] 10. Pull out /data/data/${package_name} files without root access
  4. 如何使用VS2013对C++进行编程
  5. 【读书笔记】iOS-Xcode-查找特殊字符的方法
  6. App开发
  7. ibatis中isEquals、isNotEmpty的用法
  8. 用Python写的批量文件重命名
  9. H2O与Java线程同步
  10. photoshop 常用快捷键大全
  11. mysql存储过程、函数和触发器的创建 [转]
  12. NSFileHandle编写json数据格式
  13. javascript(js)创建对象的模式与继承的几种方式
  14. Linux下设置SSH端口
  15. localeCompare() 方法实现中文的拼音排序
  16. 动态规划----最长递增子序列问题(LIS)
  17. ecplise导入项目报错而文件不报错
  18. Python:Day55 ORM多表操作
  19. Nodejs nmp 常用命令
  20. Spring Boot Shiro 权限管理 【转】

热门文章

  1. Flyme密码验证策略升级,忘记锁屏密码及「关机密码」功能
  2. test11111111
  3. GPU显存释放
  4. 分布式可扩展存储系统 BaikalDB
  5. Java8-Synchronized-No.01
  6. [hdoj4578][多延迟标记的线段树]
  7. javascript---操作节点
  8. Strategic game POJ - 1463 【最小点覆盖集】
  9. Break Standard Weight (ZOJ 3706)
  10. 系统信息的管理函数API