面向对象是一种程序设计思想,它的四大核心特点是封装 继承 多态 抽象,和传统面向过程编程思路不一样,面向对象不再把程序拆分成一个个独立函数,而是把现实事物抽象成类,再根据类创建对象,把数据和操作数据的方法捆绑在一起,这种设计思路更贴近人类认知事物的方式,适合开发大型复杂项目,代码复用性更强,后期维护扩展更加方便,很多初学者容易混淆四个特点,以为只是概念背诵,实际开发当中,这四个特点是互相配合使用,抽象是设计类的基础,封装是保护内部数据,继承实现代码复用,多态让程序具备灵活扩展能力,面试笔试也是高频考点,Java C++ Python 这些主流语言都支持面向对象编程。
四大特点对照表
| 特点 | 英文 | 核心含义 | 主要作用 |
|---|---|---|---|
| 封装 | Encapsulation | 隐藏对象内部细节,对外只暴露必要接口 | 保护内部数据,降低外部耦合 |
| 继承 | Inheritance | 子类获得父类的属性和方法 | 代码复用,建立类层级关系 |
| 多态 | Polymorphism | 同一个调用,不同对象产生不同执行结果 | 提升程序扩展性 |
| 抽象 | Abstraction | 提取事物共性,忽略非核心细节 | 简化模型,定义规范 |
四大特点深度讲解
封装
封装就是把对象里面的属性,一般设置成私有,外部不能直接修改属性的值,只能通过类对外提供的公开方法进行读取或者修改,好处就是可以在方法里面增加校验逻辑,防止非法数据直接写入对象,同时外部不需要知道内部实现细节,只需要调用接口,对象内部代码后续修改,不会影响外部调用代码。
继承
继承是子类继承父类,子类自动拥有父类全部非私有属性和方法,子类还可以新增自己独有的属性方法,也可以重写父类已经存在的方法,单继承就是一个子类只能有一个父类,多继承是一个子类可以同时继承多个父类,不同编程语言支持情况不一样,比如 Java 只支持单继承,C++ 支持多继承。
多态
多态分为编译时多态和运行时多态,编译时多态一般是方法重载,同一个类里面方法名称相同,参数列表不一样,调用的时候根据参数匹配对应的方法,运行时多态依靠继承加方法重写,父类引用指向子类对象,执行的时候会自动调用子类重写之后的方法,新增子类的时候不需要修改原有调用代码,符合开闭原则。
抽象
抽象是从多个相似事物当中抽取共同特征,定义成抽象类或者接口,只规定必须具备的属性和方法规范,不写完整实现,强制子类去实现抽象方法,抽象是设计阶段的思路,是封装继承多态的前置基础。
面向对象开发基本步骤
第一步 需求分析,识别业务当中的实体,比如用户 订单 商品,这一步就是抽象过程
第二步 定义类,设计类里面的成员属性和成员方法,使用访问修饰符完成封装设计
第三步 设计类之间关系,判断是否需要继承,搭建类的层级结构
第四步 实现方法重写和重载,完成多态设计
第五步 根据类实例化对象,通过对象调用方法,完成业务逻辑
第六步 项目迭代,新增业务类型的时候,利用多态特性扩展代码,尽量不改原有稳定代码
面向对象和面向过程对比
清单
面向过程核心是函数,按步骤执行,适合小型简单程序
面向对象核心是对象,数据和方法绑定,适合大型复杂业务系统
面向过程代码耦合偏高,业务变更加改大量原有代码
面向对象依靠封装继承多态,代码复用性高,易维护易扩展
面向过程没有类和对象概念,面向对象必须理解类与对象关系
总结
面向对象四大特点是抽象 封装 继承 多态,抽象负责提炼共性,封装保护对象内部数据,继承实现代码复用,多态实现灵活扩展,理解这四个特点不能只背定义,要结合代码实例体会,面向对象编程的优势是大型项目模块化,但是简单小程序强行使用面向对象,反而会增加代码复杂度,要根据项目规模选择合适编程思想。
【常见问题】
问题 1 面向对象四大特点里面封装的意义是什么
回答 1 面向对象当中封装可以隐藏对象内部实现,对外只开放接口,保护属性不被随意篡改,是面向对象非常基础的核心特点。
问题 2 面向对象里面继承会不会有缺点
回答 2 面向对象的继承虽然可以复用代码,但是会让类之间耦合变高,父类改动会影响所有子类,这也是面向对象继承这个特点需要注意的地方。
问题 3 面向对象多态是什么意思,举个通俗理解
回答 3 面向对象多态就是同一个方法调用,不同子类对象执行不同逻辑,是面向对象重要特点,能够让新增类型的时候不用修改原有调用代码。
问题 4 面向对象抽象和封装是同一个概念吗
回答 4 面向对象抽象和封装不是同一个概念,抽象是提取事物共性,封装是隐藏内部细节,二者都是面向对象核心特点,作用不一样。
【免责申明】
本文为编程基础知识科普,不同编程语言对面向对象特性的语法实现存在差异,概念解释参考通用计算机教材,学习请结合对应编程语言官方文档,本文不替代专业课程教学。


