Python~Python面向对象之封装、继承与多态

一、封装

1.介绍

将现实世界事物的属性和行为,封装到类中,描述为成员变量和成员方法

2.私有成员

  • 定义

    • 私有成员变量:变量以__开头

    • 私有成员方法:变量以__开头

  • 使用

    • 私有方法无法直接被类对象使用
    • 私有变量无法赋值,也无法获取值
    • 私有成员无法被类对象使用,但是可以被其他的成员使用
  • 应用:在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)

3.示例

class Student:
    __sex = '男'

    def __ifMale(self):
        if self.__sex == '男':
            return True
        else:
            return False

    def description_sex(self):
        if self.__ifMale():
            return "男人"
        else:
            return "女人"

Jack = Student()

print(Jack.description_sex())

二、继承

1.介绍

  • 继承分为单继承和多继承
  • 继承表示从父类那里继承来成员变量和方法(不含私有)

2.语法

class 类名(父类名):
    类内容

3.单继承

class phone:
    IMEI = None
    producer = None

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

class Phone2022(phone):
    face_id = True

    def call_by_5g(self):
        print("2022最新5g通话")

4.多继承

  • 多个父类中,如果有同名的成员,那么默认继承顺序从左到右为优先级
class phone:
    IMEI = None
    producer = None

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

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

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

    def write_card(self):
        print("写入NFC卡")

class RemoteControl:
    rc_type = "红外遥控"

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

class MyPhone(phone, NFCReader, RemoteControl):
    pass

5.复写

子类继承父类的成员属性和成员方法后,可以进行复写。在子类中重新定义同名的属性或方法即可

class Phone:
    IMEI = None
    producer = "HM"

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

class MyPhone(Phone):
    # 复写父类属性
    producer = "HW"

    # 复写父类方法
    def call_by_5g(self):
        print("子类的5g通话")


phone = MyPhone()
phone.call_by_5g()

6.调用父类同名成员

一旦复写父类成员,那么类对象调用的时候,就会调用复写后的新成员,如果需要使用被复写的父类的成员,需要特殊的调用方式

  • 方式一:调用父类成员
    • 使用成员变量:父类名.成员变量
    • 使用成员方法:父类名.成员方法
  • 方式二:使用super()调用父类成员
    • 使用成员变量:super().成员变量
    • 使用成员方法:super().成员方法

三、多态

同样的行为(函数),传入不同的对象,得到不同的状态

class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("汪汪汪")

class Cat(Animal):
    def speak(self):
        print("喵喵喵")


def make_noise(animal: Animal):
    animal.speak()

dog = Dog()
cat = Cat()

make_noise(dog)     # 输出:汪汪汪
make_noise(cat)     # 输出:喵喵喵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值