ex44 继承还是组成
来源:互联网 发布:毛昆仑 常凯申 知乎 编辑:程序博客网 时间:2024/06/01 21:30
继承的使用原则:
我们要尽量简单的使用继承,或者用组成代替继承,而且做好不要使用多继承。
父类和子类有三个相互影响的方法:
- 子类的动作暗含(imply)了父类的动作
- 子类的动作覆盖(override)了相应的父类动作
- 子类的动作改变(alter)了相应的父类动作
暗含继承 Implicit Inheritance
先在父类定义一个implicit函数,子类什么也不做。
First I will show you the implicit actions that happen when you define a function in the parent, butnot in the child.
首先展示暗含行为,在父类定义函数,子类中不定义。
class Parent(object): def implicit(self): print "PARENT implicit()"class Child(Parent): passdad = Parent()son = Child()dad.implicit()son.implicit()
显示:
PARENT implicit()PARENT implicit()
子类会自动取得父类的所有特征,不需要重复编写代码。
覆盖暗含 Override Explicitly(覆盖 明确)
继承的问题是有时候你希望子类有不同的函数能干不一样的事情,解决办法就是在子类中覆盖父类的函数,在子类中定义一个同名的函数(在子类中创建同名函数,并不会影响父类中的函数。)
class Parent(object): def override(self): print "PARENT override()"class Child(Parent): def override(self): print "CHILD override()"dad = Parent()son = Child()dad.override()son.override()
显示:
PARENT override()CHILD override()
改变之前或者之后
The third way to use inheritance is a special case of overriding where you want to alter the behavior before or after theParent class's version runs. You first override the function just like in the last example, but then you use a Python built-in function namedsuper to get the Parent version to call. Here's the example of doing that so you can make sense of this description:
改变(alter)是一种特殊的覆盖(override)我们需要像上一个例子一样覆盖父类的函数,然后通过super调用父类的函数。
class Parent(object): def altered(self): print "PARENT altered()" #1原来父类的内容class Child(Parent): def altered(self): print "CHILD, BEFORE PARENT altered()" #子类修改父类的altered函数 super(Child, self).altered() #super函数找Child的父类,调用父类,所以后面显示PARENT altered????? print "CHILD, AFTER PARENT altered()" #dad = Parent()son = Child()dad.altered()son.altered()
PARENT altered() #来自#1 原来的父类 dad.altered()
CHILD, BEFORE PARENT altered() #son.altered得出的结果 子类的altered函数变了,
PARENT altered()
CHILD, AFTER PARENT altered()
CHILD, BEFORE PARENT altered() #son.altered得出的结果 子类的altered函数变了,
PARENT altered()
CHILD, AFTER PARENT altered()
###### 暂停
0 0
- ex44 继承还是组成
- Learn Python The Hard Way学习(44) - 继承还是组成?
- fork - 继承还是不继承
- 国学:继承还是放弃
- 使用继承?还是接口...
- 使用继承还是组合...
- 继承还是代理啊?????
- 还是继承那些实例---
- 继承还是委托?
- 组合还是继承
- 面向对象:接口继承还是类继承?
- 还是那些继承实例二
- 到底选择合成还是继承
- JAVA使用继承还是组合
- 使用包含还是私有继承
- 组合还是继承,这是一个问题?
- 组合还是继承,这是一个问题!!!
- 面向对象:类组合还是类继承?
- 《JavaScript高级程序设计》--继承
- SSM框架注解整合
- 《JavaScript高级程序设计》--创建对象1
- 链表逆置
- 【Untiy&摄像机视角】
- ex44 继承还是组成
- Linux中常用操作命令
- 内核开发:实现切换窗口后的键盘输入
- 1112. Stucked Keyboard (20)
- display:inline-block和元素水平居中的关系
- Trie树标准模版
- 1104. Sum of Number Segments (20)
- 学习方法摘录
- 深入了解View的绘制流程