Python面向对象:封装、继承、多态

6 阅读2分钟

一、先记住一句话

封装 = 保护数据继承 = 代码复用多态 = 同一个方法,不同表现


二、封装(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)

是什么?

同一个方法名,不同的子类调用,表现出不同的行为

前提

  1. 继承
  2. 方法重写

示例(最标准)

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. 多态

同样的方法名,不同子类表现不同 继承 + 重写 = 多态


六、一句话终极总结

封装保护数据,继承复用代码,多态灵活扩展。