面向对象_基本概念(2)


类的继承

  1).  两个类之间是从属关系
  2).  代码复用

实现继承

能直接使用父[基]类的属性和方法

接口继承

只能使用父类的属性和方法的名称,自己处理代码实现


单继承

    class Father(object):
        pass

    class Child(Father):
        pass

重写

【防止执行父类中的方法】

    class Father(object):
        DIR = '/var/php/'
        def __up(self)
            print('is father up')
        pass

    class Child(Father):
        DIR = '/var/python/'
        def __up(self)
            print('is child up')
        pass

子类定义与父类同名方法或属性,会自动覆盖父类对应的方法或属性


self

【永远是执行该方法的调用者】

    class M(object):

        def __init__(self):
            pass

        def __run(self):
            pass

    abc = M()

abc = M()
M这个类,通过实例化得到了abc这个对象,此时类中所有的self,都代表 abc 实例本身


__init__方法继承

    class Fa(object):

        PUBFILED = 911  # 静态属性 在类里边

        def __init__(self):
            print('Fa is init')

    class Ga(Fa):

        def __init__(self):
            super(Ga, self).__init__()

    b = Ga()

b 实例化 Ga ,Ga中的self就是对象b
init方法又继承了父类
b对象又把自己传给了 Fa 的init方法
这样就实现了子类调用父类的构造函数


多重继承

clas s DerivedClassName(Base1, Base2, Base3):

2.7  经典类,深度优先;新式类,广度优先
3.x  均是广度优先


封装

隐藏功能的实现细节,防止数据被随意修改

封装了: 静态属性和方法
对象 封装了:普通属性的值


多态

接口重用


继承和封装代码后,注意事项

    class Fa(object):
        age = 123

        def __init__(self):
            self.age = 333

        def change_num(self):
            print('Fa_change_num')

        def fa_run(self):
            print('Fa__run')
            self.change_num()

    class Fb(Fa):

        def __init__(self):
            super(Fb, self).__init__()
            print(self.age)

        def change_num(self):
            print('Fb_change_num')

        def fb_run(self):
            print('Fb_run')
            self.fa_run()

    a = Fb()
    a.fb_run()

结果
333
Fb_run
Fa__run
Fb_change_num

注意:这里 fa_run() 调用 change_num() 方法,得到的是 Fb_change_num() 方法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值