关于封装、继承和多态是面向对象编程的三大特征之批判

先说封装

封装是一种通行于世的理念,甚至不限于编程领域。我用来写这篇文章的电脑里面,就处处是封装。我所在的公司,每一个职能部门其实也是一种封装。。。编程

而后,典型的面向过程编程语言C,难道就不能封装了吗?头文件这种设计就是封装理念的一种体现。设计模式

而后是继承

继承显然是一种语言特性,只须要编程语言和编译器支持就行。不就是代码复用的一种手段吗?面向对象何德何能,就敢篡为己有?编程语言

最后是多态

多态却是只有面向对象有,但从严格意义上来讲,并非核心特征,而是对象自己特征衍生出来的一种设计模式而已。函数

面向对象编程真正的特征是什么?

我认为是:数据和逻辑的统一。在面向对象编程中,一个类型里面既包含了对象属性(数据),又包含了方法(逻辑)。强调的是经过公开的方法去操做私有的数据。而不是在对象外部直接操做对象的数据。并且,对于一个对象而言,属性(数据)才是主体,逻辑(方法)则是对象的能力的体现。设计

而面向过程编程则相反,虽然一样有方法或者叫函数(逻辑),但逻辑才是主体。虽然也有变量能够存储数据,但变量和属性彻底不是一回事。变量只不过是数据的抓手,而属性则由于每一个对象都是一个特定的实例,因此属性能够彻底表明数据。在面向过程的编程中,逻辑就如同生产线,而数据只是生产线加工生产的产品而已。对象

相关文章
相关标签/搜索