笨方法学Python—习题44:继承与合成

继承与合成

大部分使用继承的场合都可以用合成取代,而多重继承则不惜一切的避免它。

什么是继承

继承是用来指明一个类的大部分或全部功能都是从一个父类中获得的。

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()

若将函数放到基类中(父类),那所有的子类将会自动获得这些函数功能。可避免重复写很多代码。

显示覆盖

有时需子类的函数有一个不同的行为,就需要覆盖父类中的函数࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值