继承与合成
大部分使用继承的场合都可以用合成取代,而多重继承则不惜一切的避免它。
什么是继承
继承是用来指明一个类的大部分或全部功能都是从一个父类中获得的。
class Foo(bar),就发生了继承效果:创建一个叫Foo的类,并让它继承Bar———Python语言会让Bar的实例所具有的功能都工作在Foo的实例上。 所以你可把通用功能放到Bar里边,然后再给Foo特别设定一些功能。
父类与子类有三种交换方式:
1. 子类上的动作完全等同于父类上的动作;
2. 子类上的动作完全覆盖了父类上的动作;
3. 子类上的动作部分替换了父类上的动作。
隐式继承
在父类中定义了一个函数但没在子类中定义时,会发生隐式继承(implicit inheritance)
class Parent(object):
def implicit(self):
print "PARENT implicit()"
class Child(Parent):
pass
dad = Parent()
son = Child()
dad.implicit()
son.implicit()
Child类中未定义任何细节,将会从它的父类继承所有行为。运行后:
PARENT implicit()
PARENT implicit()
若将函数放到基类中(父类),那所有的子类将会自动获得这些函数功能。可避免重复写很多代码。
显示覆盖
有时需子类的函数有一个不同的行为,就需要覆盖父类中的函数