python语法-面向对象(封装、继承、复写、多态)

python语法-面向对象(封装、继承、复写、多态)

  1. 封装
  2. 继承
  3. 复写
  4. 多态

1.封装

"""
封装(将现实世界事物在类中描述为属性和方法,即为封装)
    私有成员:
        定义私有成员变量或者方法,只需要变量名或者方法名以__开头(2个下划线) 
        类对象无法访问私有成员,类中的其他成员可以访问私有成员
"""


# 演示面向对象封装思想中私有成员的使用
class Phone:
    __current_voltage = 0.5  # 当前手机运行电压(对用户隐藏)

    def __keep_single_core(self):
        print("让CPU以单核模式运行")

    def call_by_5g(self):  # 手机进入5g模式
        if self.__current_voltage >= 1:
            print("5g通话已开启")
        else:
            self.__keep_single_core()
            print("电量不足,无法使用5g通话,并已设置为单核运行进行省电。")


phone = Phone()
# print(phone.__current_voltage)  # 直接调用私有变量,报错
# phone.__keep_single_core()      # 直接调用私有方法,报错
phone.call_by_5g()

python语法-面向对象(封装、继承、复写、多态)_第1张图片

"""
练习解析:设计带有私有成员的手机
"""
class Phone:
    __is_5g__enable = False

    def __check_5g(self):
        if self.__is_5g__enable == True:
            print("5g开启")
        else:
            print("5g关闭,使用4g网络")

    def call_by_5g(self):
        self.__check_5g()
        print("正在通话中")

if __name__ == '__main__':
    phone = Phone()
    phone.call_by_5g()

2.继承

"""
继承(从父类哪里继承来成员变量和成员方法,但不含私有)
    继承语法如下:
        class 类名(父类1,父类2,父类3,...):
            类内容体
"""


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

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


class Phone2022(Phone):
    face_id = "10001"  # 面部识别ID

    def call_by_5g(self):
        print("2022年新功能:5g通话")


phone = Phone2022()
print(phone.producer)
phone.call_by_4g()
phone.call_by_5g()

3.复写

"""
    复写(如果要复写父类属性或者方法,只需要在子类中重新定义即可)
        如果需要调用被复写的父类的成员:
            方法1:
                父类名.成员变量
                父类名.成员方法(self)
            方法2(使用super()):
                super().成员变量
                super().成员方法()
                
"""

4.多态

"""
多态:多态指的是多种状态,即完成某个行为(函数)时,使用不同的对象会得到不同的状态
    1.主要作用在继承关系上(抽象类,即接口,用于顶层设计作为约束,子类做具体实现):
        父类做声明工作
        以子类做实际工作
        用以获得同一行为,不同状态
"""

"""
演示面向对象的多态特性
"""


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对象
    animal.speak()


# 演示多态,使用两个子类对象来调用函数
dog = Dog()
cat = Cat()

make_noise(dog)
make_noise(cat)

"""
演示抽象类(接口)的使用
"""


class AC:
    def cool_wind(self):
        """制冷"""
        pass

    def hot_wind(self):
        """制热"""
        pass

    def swing_l_r(self):
        """左右摆风"""
        pass


class Midea_AC(AC):
    def cool_wind(self):
        print("美的空调制冷")

    def hot_wind(self):
        print("美的空调制热")

    def swing_l_r(self):
        print("美的空调左右摆风")


class GREE_AC(AC):
    def cool_wind(self):
        print("格力空调制冷")

    def hot_wind(self):
        print("格力空调制热")

    def swing_l_r(self):
        print("空调左右摆风")


def make_cool(ac: AC):
    ac.cool_wind()


midea_ac = Midea_AC()
gree_ac = GREE_AC()

make_cool(midea_ac)
make_cool(gree_ac)

参考内容:
学习python基础第一阶段-有感而发
python语法-面向对象(类的基本使用)
黑马程序员-pyhton基础

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