【python基础_05】面向对象2_封装、继承、多态

文章目录

    • 1.封装
      • 1.1 封装的概念
      • 1.2 私有成员
      • 1.3 代码实例
    • 2. 继承
      • 2.1 继承的基础语法
        • 2.1.1 单继承
        • 2.1.2 多继承
        • 2.1.3 代码实例
      • 2.2 复写父类成员
      • 2.3 调用父类成员
    • 3.多态
      • 3.1 多态的概念
      • 3.2 抽象类(接口)

1.封装

1.1 封装的概念

【python基础_05】面向对象2_封装、继承、多态_第1张图片

1.2 私有成员

【python基础_05】面向对象2_封装、继承、多态_第2张图片
【python基础_05】面向对象2_封装、继承、多态_第3张图片
私有方法无法直接被类对象使用。
私有变量无法赋值,也无法获取值。

【python基础_05】面向对象2_封装、继承、多态_第4张图片私有方法无法直接被类对象使用,但可以被其他成员使用。
【python基础_05】面向对象2_封装、继承、多态_第5张图片
【python基础_05】面向对象2_封装、继承、多态_第6张图片

1.3 代码实例

class Phone:
    __current_voltage = 1       # 当前手机运行电压,私有成员变量

    def __keep_single_core(self):  # 私有成员方法
        print("单核模式运行")

    def call_by_5G(self):
        if self.__current_voltage >= 1:
            print("5G开启")
        else:
            self.__keep_single_core()
            print("没电了,不能开5G,设为单核模式了")

phone = Phone()
phone.call_by_5G()

2. 继承

2.1 继承的基础语法

【python基础_05】面向对象2_封装、继承、多态_第7张图片
【python基础_05】面向对象2_封装、继承、多态_第8张图片

2.1.1 单继承

【python基础_05】面向对象2_封装、继承、多态_第9张图片

2.1.2 多继承

【python基础_05】面向对象2_封装、继承、多态_第10张图片

【python基础_05】面向对象2_封装、继承、多态_第11张图片
【python基础_05】面向对象2_封装、继承、多态_第12张图片

2.1.3 代码实例

# 单继承
class Phone:
    IMEI = None  #序列号
    producer = "HM"

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


class Phone2022(Phone):
    face_id = "1001"  #面部识别id

    def call_by_5g(self):
        print("hello,2022-5g")

phone = Phone2022()
print(phone.producer) #新旧功能都能用
phone.call_by_4g()
phone.call_by_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):  #如果有同名的量,选用前者的,比如Phone和NFCReader都有producer,选Phone
    pass  # 不报错又表示这里是空的                 # 谁先被继承,谁的优先级更高


phone = Myphone()
phone.control()

2.2 复写父类成员

【python基础_05】面向对象2_封装、继承、多态_第13张图片

2.3 调用父类成员

【python基础_05】面向对象2_封装、继承、多态_第14张图片

【python基础_05】面向对象2_封装、继承、多态_第15张图片

3.多态

3.1 多态的概念

多态的概念依赖于继承。

定义:子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果。
实现步骤:(1)定义父类,提供公共方法。(2)定义子类,重写父类方法。(3)传递子类对象给调用者,可以看到不同子类执行效果不同。

【python基础_05】面向对象2_封装、继承、多态_第16张图片

class Animal:     #抽象方法
    def speak(self):
        pass

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

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

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

dog = Dog()
cat = Cat()

make_noise(dog)
make_noise(cat)

【python基础_05】面向对象2_封装、继承、多态_第17张图片

3.2 抽象类(接口)

【python基础_05】面向对象2_封装、继承、多态_第18张图片
【python基础_05】面向对象2_封装、继承、多态_第19张图片
【python基础_05】面向对象2_封装、继承、多态_第20张图片

【python基础_05】面向对象2_封装、继承、多态_第21张图片

你可能感兴趣的:(Python,python,开发语言)