Python学习从0到1 day20 第二阶段 面向对象 ③ 继承

循此苦旅,以达天际

              —— 24.4.3

一、继承的基础语法

学习目标:

① 理解继承的概念

② 掌握继承的使用方式

③ 掌握pass关键字的作用

单继承

语法:

        class 类名(父类名):

                类内容体

继承分为:单继承和多继承

继承表示:将从父类那里继承(复制)来成员变量和成员方法(不含私有)

案例:

'''
演示面向对象:继承的基础语法
'''

# 演示单继承
class Better:
    Imei = "AllBetter"

    def sayhello(self):
        print("一切都会好的")


class Future(Better):
    id = "insist"

    def Tomorrow(self):
        print("我一直相信")

Lcl = Future()
print(Lcl.Imei)
print(Lcl.id)
Lcl.sayhello()
Lcl.Tomorrow()

多继承

python中的类之间也支持多继承,即一个类,可以继承多个父类

语法:

        class 类名(父类1,父类2,……,父类N):

                类内容体

案例:

'''
演示多继承
'''
class Phone:
    IMEI = None     # 序列号
    producer = "HM" # 厂商

    def call_by_4g(self):
        print("4G通话")

class NFCReader:
    nfc_type = "第五代"
    producer = "HM"

    def read_card(self):
        print("NFC读卡")

    def whrite_card(self):
        print("NFC写卡")

class RemoteControl:
    rc_type = "红外遥控"

    def control(self):
        print("红外遥控开启了")

class MyPhone(Phone,NFCReader,RemoteControl):
    pass    # 补全,让我们的代码显示为空

phone = MyPhone()
print(phone.producer)
phone.call_by_4g()
phone.read_card()
phone.whrite_card()
phone.control()

多继承注意事项:

多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级

即:先继承的保留,后继承的被覆盖

总结

1.什么是继承?

        继承就是一个类,继承另外一个类的成员变量和成员方法

        语法:

                class 类(父类1,父类2,……,父类N):

                        类内容体

        子类构建的类对象,可以:

                ①有自己的成员变量和成员方法

                ②使用父类的成员变量和成员方法

2.单继承和多继承

        单继承:一个类继承另一个类

        多继承:一个类继承多个类,按照顺序从左向右依次继承

        多继承中,如果父类有同名方法或属性,先继承的优先级高于后继承

3.pass关键字的作用是什么?

        pass是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思

二、复写和使用父类成员

学习目标

1.掌握复写父类成员的语法

2.掌握如何在子类中调用父类成员

复写

子类继承父类的成员属性和成员方法后,如果对其不满意,那么可以进行复写

即:在子类中重新定义同名的属性或方法即可

案例:

'''
复写
'''
class Phone:
    IMEI = None
    producer = "ITCAST"

    def call_by_5g(self):
        print("父类的5g通话")

class MyPhone(Phone):
    producer = "ITheima"

    def call_by_5g(self):
        print("子类的5g通话")
        print("开启CPU单核模式,以便于省电")

myPhone = MyPhone()
myPhone.call_by_5g()
print(myPhone.IMEI)
print(myPhone.producer)

调用父类同名成员

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员

如果需要使用被复写的父类的成员,需要特殊的调用方式:

        方式1:

                调用父类成员

                使用成员变量:父类名.成员变量

                使用成员方法:父类名.成员方法(self)

        方式2:

                使用super()调用父类成员

                使用成员变量:super().成员变量

                使用成员方法:super().成员方法()

'''
复写
'''
class Phone:
    IMEI = None
    producer = "ITCAST"

    def call_by_5g(self):
        print("父类的5g通话")

class MyPhone(Phone):
    producer = "ITheima"    # 复写父类的成员属性

    def call_by_5g(self):
        print("子类的5g通话")
        print("开启CPU单核模式,以便于省电")
        '''
        如果需要使用被复写的父类的成员,需要特殊的调用方式:
            方式1:
                用父类成员
                    使用成员变量:父类名.成员变量
                    使用成员方法:父类名.成员方法(self)
            方式2:
                使用super()调用父类成员
                使用成员变量:super().成员变量
                使用成员方法:super().成员方法()
        '''
        print(f"父类的厂商是:{super().producer}")
        super().call_by_5g()

myPhone = MyPhone()
myPhone.call_by_5g()
print(myPhone.IMEI)
print(myPhone.producer)

总结

1.复写表示:

        对父类的成员属性或成员方法进行重新定义

2.复写的语法:

        在子类中重新实现同名成员方法或成员属性即可

3.在子类中,如何调用父类成员:

        方式1:

                调用父类成员

                使用成员变量:父类名.成员变量

                使用成员方法:父类名.成员方法(self)

        方式2:

                使用super()调用父类成员

                使用成员变量:super().成员变量

                使用成员方法:super().成员方法()

        注意:只可以在子类内部调用父类的同名成员,子类的实体类对象调用默认是调用子类复写的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值