Skip to content

面向对象的理解

首先,面向对象程序设计(Object Oriented Programming,OOP)是一种计算机编程架构

OOP特点 = 封装 + 继承 + 多态,OOP达到了软件工程的三个主要目标:重用性灵活性扩展性

面向对象使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程

人总喜欢把我们已知的,或者未知的事务分类,好人?坏人?人?动物?

因为这样归类,给一个具体对象打上标签之后方便我们记忆,甚至是扩展记忆的连贯性。

虽然说有时候具有很强的主观性,但不可否认,这是我们人类最容易记忆的方式。

所以,当我们的程序越来越复杂的时候,就需要一种可读性,可理解性更强,更适合人类的程序设计方式。那就是面向对象。所以在互联网行业,很多流行的后端语言都是面向对象的,比如java,c#等等,因为涉及的业务复杂,为了在这个纷繁复杂的程序业务世界中,找到最清楚的脉络,那就是像我们人类认知世界一样,把各个内容分类,打上标签。

所以面向对象中所说的类,就是对具有相似属性,相似行为的内容进行代码的归类。无非也就是为了开发者记忆,阅读和扩展。

以类型系统的角度来看:一个类,其实就是创建了一种新的数据结构类型。所以一个类,就是一个类型

在ES6之前,传统的JavaScript程序使用构造函数来创建类,基于原型的效果来实现继承。但是这样就让函数有了二义性,简单来说一个构造函数,既能表示是一个函数,也能表示是一个构造函数(类),虽然之前一直约定俗成的默认只要函数名首字母大写就是构造函数,但是却一直没有语法层面的区分,所以ES6之后加上了class和箭头函数,专门用来区分类和一般函数。