问题: 什么是面向对象编程(OOP),它的核心思想是什么?

👇 点击展开/折叠 面试背诵模板(建议先背这个) 面向对象编程是一种以对象为核心的编程范式,通过将数据(属性)和操作数据的方法(行为)封装为独立的实体(对象),并利用类作为创建对象的模板。核心思想包括四大机制:封装(隐藏内部细节,暴露接口)、继承(复用父类代码,建立层级关系)、多态(同一接口多种实现,依赖于鸭子类型或继承体系)和抽象(提炼核心特征,忽略无关细节)。其目标在于通过对象间的协作构建灵活、可扩展、易维护的软件系统。
---

四大核心机制的职责划分

封装、继承、多态、抽象在 OOP 中承担不同的“角色”:

  • 封装:保护数据完整性,将内部状态私有化(如 Python 中用 _ 或 __ 约定),仅通过公共方法(getter/setter)访问,降低模块间耦合。
  • 继承:建立 is-a 关系(如 Dog 是 Animal),子类自动获得父类特性,支持重写(Override)以定制行为,是代码复用的主要手段。
  • 多态:允许不同类的对象对同一消息(方法调用)做出不同响应。在 Python 中表现为鸭子类型(只要实现相应方法即可,不强制依赖继承)。
  • 抽象:通过抽象类(ABC 模块)定义接口规范,强制子类实现特定方法,将“做什么”与“怎么做”分离。

类与对象的本质关系(抽象蓝图与具体实体)

  • 类(Class):是静态的抽象模板,定义了对象应有的结构和能力,编译时(或定义时)即存在。
  • 对象(Object):是动态的具体实体,依据类模板在堆内存中分配独立空间,拥有独立的属性值(如 stu1.name 与 stu2.name 互不影响)。
  • 现实映射:类好比“汽车设计图”,对象则是根据该图纸生产出来的实体“小轿车”。

OOP 在大型系统设计中的核心价值

相较于面向过程(POP),OOP 在大型系统中优势显著:

  • 应对复杂性:通过将系统拆分为职责单一的对象,降低了认知负担,便于团队分工。
  • 拥抱变化:多态和开闭原则(对扩展开放,对修改关闭)使得新增功能(如新增 Cat 类)无需修改原有调用方代码。
  • 数据安全:封装机制防止外部代码直接破坏对象的合法状态(如年龄不能为负数)。