题记:以下文字仅代表笔者个人心得。
对于这个问题,不同的人,不同的参考书籍,会给出很多不同的答案;比如继承、多态、等;我不否认这些答案的正确性,因为我在学习之初也是这样认为的,但是经过这几年我本人在C++方面上的学习和探索,我逐渐发现面向对象编程和面向过程编程最本质的区别在于“代码重用”问题,更严格的说是“代码被重用”。
为什么说“代码重用”是面向对象编程的核心呢?因为我们目前的编程,除非是用汇编语言,否则,我们所编写的代码中十之八九的都在重用别人的代码,就拿一个小小的"cout<<num<<endl;" ,这个“cout<<”就是重用了<iostream>库中的代码而来的,类似的例子举不胜举;其次,就是“继承”,继承的本质是什么?基类和子类之间有什么关系?为什么我们不单独的写一个新类而要使用继承呢?不就是父类的一些性质在子类中也能用到吗?因此,我们为了方便,为了提高效率,使用了继承,这算不算是代码被重用?
另外就是“多态”,何为多态?简而言之就是一个函数接口具有多种功能;可以通过纯虚函数的继承实现,也可以通过模板实现。同一个函数、同一段代码在不同的使用环境里表现出的功能不同,这本身就是一种代码被重用!
所以,我认为面向对象编程其实质就是代码重用。以上是我本人的一些拙见,班门弄斧,如有不妥还望指教。
----Pitfall
2016.06
网友评论