面向对象程序设计 封装、继承、多态性的深坑_封装继承中遇到的问题

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

面向对象程序设计的三个主要属性是

封装 (Encapsulation)继承 (Succession)多态性(Polymorphism)百书百述,每一种描述只在它处的环境似乎很有道理,又充满了混沌。如果真的按照上面指导进行程序设计,对没有大量实际编程的人来说,描述很简单,实际找不到北。因为大多数描述是以实体名称分类来形容三个属性的含义,事实情况是它们都是抽象的概念。

即便堆积了不少基础,还是艰难下手。如果一味的苦补书本,就会不断撞击知识盲点,其实是有天花板的,经常会陷入无限循环和死结。这是面向对象设计很难的重要原因。我们的学生学习以满分为标准,知识点加技巧加脑筋急转弯。现实是无穷的未知,那有哪么多满分,达到5%就是巨大的突破,再多点开始横吹天下,好了这是废话。

面向对象程序设计是依赖类的,封装通常也可以是类的形态,也可以是任何事物的方法!通常情况是:项目分类是不确定的,即需要多少类和子类配合,怎么分类是最合理的安全的这些都是未知的。自然会产生死结,解决这些死结也只能找到一些非常规的变通方法,这就是经常996加班的结果所在。
这里也用图来举一个例子:内容很简单,就是把文本在右侧视窗中像思维或关系导向图呈现。

上图左侧是一个普通文本,先说什么是继承 ,左侧的文本全部都在右侧视窗中显示了,这就是继承!可能 不少人不同意我的观点。先保留一下。那么什么是封装,我说完成从文本到视窗的形态的工作就是封装。更少人会这么认为了。因为它不好像符合顶层设计的正说。

现在我来说说我的观点顶层设计不可能是最优解!**这是一个深坑!**封装、继承、多态是相对的,只在一个同一层面上。所有的实体对象也是相对的,在一个局部是实体对象,而对另一个外部确是一个类的元素,变成对象的对象。这才符合抽象设计的原意和灵魂。程序就是在这一整个过程的封装,文本字符串在视图中重现就是对象的继承,多态就更不用说了,形态改变、色彩改变,等等都是多态。不同的文件用同一程序处理也是多态。程序内部一定还有封装、继承、多态,至少还要用到系统的各种控件和库等。封装里还有继承多态,继承里还有封装,多态里还有继承等等,互相交织!

这样理解就舒服多了,我们完全可以从每一个局部来处理封装、继承、多态设计特性,不拘于顶层设计的自下向上(bottom-up)的编程,甚至可以从底层回溯、中层演变,可以封装就封装,可以继承就继承,可以多态就多态,不一定完整有序,但要顺时机而为,做到闭环有理,开环有据。在一个阶段不能做到的事情,在另一个阶段成熟后轻松解决了。

在日常子项目的设计中,通常设计许多的非工作需求的临界检测代码和假设代码。这些代码大多数情况下是躺着的不会被触发,或者永远不会被触发,这是不确定的。经常出现这种情况进行优化时,产生恐怖的崩塌。所以复杂的代码要尽量保存到回溯归类,设计类?反向了呢,底层向上****自上向下程序到类(up-bottom)的编程,做好必要的数据隔离和代码复用。

不管是java、Python还是C++等其它面向对象设计语言都会有这样的困惑,这个结应该需要顶层理解和开放思维。就像下图一样,不是一所谓到底,而是有反馈,相互交织才是正常的。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值