覆盖

覆盖override(也叫重写overwrite)

什么是覆盖?

覆盖是指有继承关系的类中,子类中实现了与基类同名的方法

在子类实例调用该方法时,实际调用的是子类中的覆盖版本,这种现象叫作覆盖。


子类对象显示调用基类方法的方式:

    基类名.方法名(实例,参数)

'''
    此模块用来演示覆盖run方法
'''
class Human:
    def say(self,what):
        print('说:',what)

    def run(self,speed):
        print('正在以',speed,'m/s速度奔跑!')


class Teacher(Human):#继承Human类
    def teacher(self,language):
        print('老师正在教:',language)

    def run(self,speed):
        print('老师正在以',speed,'m/min的速度走')


class Student(Teacher):#继承Human类

    def study(self,progam):
        print('正在学习:',progam)

    def run(self,speed):
        print('学生在跑步,速度为:',speed,'m/s','这是一个Student类内定义的run,把Human中继承的run方法覆盖掉了')

    def walk(self,speed):#走的方法
        self.run(speed) #调用自身
        # self.__class__.__base__run(self,speed)#借助于self调用父类Human中的run
        # print('正在以:',speed,'m/s速度行走')



h1=Human()
s1=Student()
t1=Teacher()
h1.run(5)
s1.run(6)#此时调用的是Stundent的覆盖方法override,相当于重写了一个run方法
Human.run(s1,10)#此时s1不在调用自己Student类内的run,而是调用Human父类中的run了,方法是括号内:第一个传对象,第二个传参数
s1.walk(3)
t1.run(7)
t1.teacher('英文')


# print('Teacher类的基类',Teacher.__base__)
# print('Student类的基类',Student.__base__)
# print('object类的基类',object.__base__)
#
#
# t1.__class__.__base__












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值