一、先记住一句话
封装 = 保护数据继承 = 代码复用多态 = 同一个方法,不同表现
二、封装(Encapsulation)
是什么?
把属性和方法包装在类里,并隐藏内部细节,只对外提供安全访问方式。
作用
- 保护数据不被随意修改
- 让代码更安全、更规范
Python 实现:私有属性 / 私有方法
用 两个下划线 __
class Person:
def __init__(self, name, age):
self.name = name # 公开属性
self.__age = age # 私有属性(外部不能直接访问)
# 提供公开方法访问私有属性
def get_age(self):
return self.__age
def set_age(self, age):
if 0 < age < 150:
self.__age = age
p = Person("小明", 18)
print(p.name) # 可以访问
# print(p.__age) # 报错!不能访问
print(p.get_age()) # 正确方式
封装口诀
隐藏私有,公开接口,安全控制。
三、继承(Inheritance)
是什么?
子类 继承 父类的属性和方法,不用重复写代码。
作用
- 代码复用
- 扩展功能
语法
class 子类(父类):
示例
# 父类
class Animal:
def speak(self):
print("动物在叫")
# 子类继承 Animal
class Dog(Animal):
def speak(self): # 方法重写
print("汪汪汪")
class Cat(Animal):
def speak(self):
print("喵喵喵")
dog = Dog()
dog.speak() # 汪汪汪
支持:多继承
class A:
pass
class B:
pass
class C(A, B):
pass
继承口诀
子类复用父类,扩展重写更灵活。
四、多态(Polymorphism)
是什么?
同一个方法名,不同的子类调用,表现出不同的行为。
前提
- 继承
- 方法重写
示例(最标准)
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("汪汪")
class Cat(Animal):
def speak(self):
print("喵喵")
# 同一个函数,表现不同结果 → 多态
def do_speak(animal: Animal):
animal.speak()
do_speak(Dog()) # 汪汪
do_speak(Cat()) # 喵喵
多态口诀
同一种调用,不同的结果。
五、三大特性总结(超级好记)
1. 封装
把数据藏起来,不让别人乱改 __私有属性 + get/set方法
2. 继承
儿子用爸爸的东西 class 子类(父类)
3. 多态
同样的方法名,不同子类表现不同 继承 + 重写 = 多态
六、一句话终极总结
封装保护数据,继承复用代码,多态灵活扩展。