也看面向对象

本人以一名普通的在读211大三学生的立场和观点写下这篇文章,仅代表个人观点,难免有所偏颇,欢迎指正。


转眼已经大三,具体第一次接触面向对象已经两年了,其中经历了C++的启蒙,Java和C#的锻炼,js和lua的毒打,也见过rust与go的不一样,还接触到了一些FP(函数式编程)。回想起来对面向对象有一个新的认识。

面向对象(OO)的特点是什么?我觉得学过这门课的人都会说,封装、继承、多态。
的确,这就是大家认识的OO的特征,但这并不是最本质的面向对象的特性。

封装:封装的目的就是让你碰不到你不该碰到东西,封装可能又很多原因,比如,这个过程不能被修改,修改了就会出错,或者,保持一个接口的清晰。
但是封装也带来了很多麻烦,比如,我真的需要修改这个实现的过程,我也很清楚我在干嘛,封装就会给这个过程带来了麻烦。
封装的原因还是不相信程序员,的确,你不能确定你的代码是谁会接着写,保持一个好的模式是避免问题一个解决方法。

封装就是为了让程序结构变得清楚,把同类的东西放在一起,把不需要让其他人知道的东西藏起来。

在C++中封装的体现就是类,类把同类的属性给提取出来,比如有相同方法的东西提出来变成一个类,但是我的很多东西有部分方法是相同的,而其他却不同,我们把这些相同的方法提取出来,形成一个新的类,而这些原来的类就是这个类派生出来的,这个过程就叫做继承。

WIP

原文地址:https://www.cnblogs.com/jhy16193335/p/12191255.html