面向对象编程
Object-Oriented Programming
对象=算法+数据结构
程序=(对象+对象+...)+消息
面向对象编程(OOP)是 20 世纪 90 年代开始流行的编程范式。最早的编程语言(如 C)并不具备“对象”这一概念,但随着软件需求的复杂化,人们发现“对象”是一个符合人类直觉、易于理解的建模方式。
通过“对象”,程序可以更自然地模拟现实世界的事物和行为。如今,大多数现代编程语言(如 Java、Python、C++、C#)都支持面向对象编程。OOP 已成为计算机科学的基础概念,其思想和原理适用于绝大多数语言和场景。
- 设计所需的各种类和对象,将数据与操作封装在一起
- 考虑如何向有关对象发送信息,调用函数实现功能
一、基本概念
对象 Object
构成系统的基本单位,由一组属性和一组行为构成
- 属性 attribute: 静态特征
- 行为 behavior: 动态特征
(有编程语言称为:方法 method)
接受外部输入的信息(消息 message)产生特定的功能
类 Class
对象的类型,代表一批对象的共性和特征
- 类是对象的抽象、对象的模板:只是抽象的类型,不占用储存空间
- 对象是类的具体实例 (instance):具体存在,占用储存空间
消息 Message
在面向对象编程中,“消息”是对对象的请求,是函数/方法调用的抽象描述。
- 对象之间通过发送“消息”进行通信
- 消息驱动程序的行为
二、基本思想
封装 Encapsulation
将数据与操作数据的代码绑定在一起,对外隐藏实现细节
通过公开的接口(方法)访问对象数据,提高安全性、降低复杂性、增强模块化
继承 Inheritance
子类可以继承父类的属性和方法,避免重复定义
支持代码复用与扩展
多态 Polymorphism
同一个方法名/接口,在不同对象上表现出不同的行为
运行时根据对象的实际类型决定调用哪个方法
允许用父类类型的引用指向子类对象,提高程序的灵活性和可扩展性
重载 Overloading
在同一个类中,允许同名方法有不同的参数列表(参数个数、类型不同)。编译时根据调用时的参数决定调用哪个版本的方法