为什么要面向对象?
面向对象是为了解决系统的可维护性,可扩展性,可重用性。面向过程编程,所以函数都写死了,那么存在这样一种情况,后面我们需要修改某部分系统功能的时候,可能就动一个地方,需要将整个代码重新写一遍。《大话设计模式》这本书很好解释了这个问题:三国时期曹操攻打东吴,曹操吟诗:”喝酒唱歌,人生真爽!”,当刻板出来之后,曹操觉得不好,让工匠改成”对酒当歌,人生真爽”,刻板又出来了,曹操又觉得不好,让工匠改为”对酒当歌,人生几何”。这里就体现了面向对象的好处,如果那个时候有活字印刷,那么只需要改对应改的字即可,而不是重新全部重刻,这就叫可维护。狗会跑,猫也会跑,那么只要是可以跑的,我是不是可以把跑这个动作作为一个基准?让所有可以跑的东西,都来通过我这个基准去实现,那么这就是可扩展,这也就是接口。当然可扩展不仅仅通过接口,继承也可以。狗会跑,经过训练,狗还能边跑边跳,那么是不是可以通过继承,让新的狗(训练狗)有跳的功能,那么这也算是可扩展,也是重用。
当然,面向过程编程也可以通过函数的方法实现可重用性。但是如果我下一次要让一只鸡也可以边跑边跳,那怎么办?复制训练狗的代码?No!当重复代码多到一定程度,维护的时候,那就是灾难。就比如计算器,计算和显示的问题,如果分开写,那么我后面要维护修改的时候就可以到我想要做改变的地方去修改,后期想要加入新的计算方法,那么直接到计算的类里去维护修改就行了。
为什么要放在类里?
类就是个模板,我要创建一个叫小明的学生和一个小刚的同学,那么我们直接可以通过这个模板,填充相应数据即可。如果不放在类里,那么创建2个同学,就会重复的写很多代码。还有就是,就像人一样,由头、手、脚等器官,它们都有不同的功能。头就像main方法一样,手和脚通过头的调用,各自完成各自该完成的事就可以了。一个类就做一个事情。
为什么要使用多态?它可以消除类型之间的耦合关系,多态对已存在代码具有可替换性,这也就是在线升级的原理。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。
为什么要把代码搞的那么复杂?
实际上面向对象是将代码简化了,面向过程编程什么东西都糅合在一起才是使程序复杂,难以阅读修改。面向对象,将不同工作分工,使代码更易于阅读修改。
因为代码量确实太少,表述不是很准确。
老九学堂会员社群出品
作者:柳成萌