python语法-面向对象(封装、继承、复写、多态)
- 封装
- 继承
- 复写
- 多态
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()
"""
练习解析:设计带有私有成员的手机
"""
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基础