OOP(Object-oriented programming)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。
产生背景
对面向模拟系统的语言(如:SIMULA 67)的研究及对高可靠性系统架构(如:高性能操作系统和CPU的架构)的研究最终导致了OOP的诞生。其中由Deborah J. Armstrong进行的长达40年之久的计算机著作调查中,显示出了一系列面向对象程序设计的基本理论。
这里有一篇Deborah J. Armstrong关于面向对象开发理解的论文
OOP的特点
继承
没啥好说的,儿子继承爸爸,子类继承父类的方法、属性。在js中,可以理解为原型链,当前的prototype中找不到的方法或属性,就会继续向父类的prototype中去找,一直到null。当然子类可以重写父类中的方法或属性。
多态
所谓多态意指相同的消息给予不同的对象会引发不同的动作。多态可分为变量多态与函数多态。变量多态是指:基类型的变量(对于C++是引用或指针)可以被赋值基类型对象,也可以被赋值派生类型的对象。函数多态是指,相同的函数调用界面(函数名与实参表),传送给一个对象变量,可以有不同的行为,这视该对象变量所指向的对象类型而定。因此,变量多态是函数多态的基础
封装
具备封装性(Encapsulation)的面向对象编程隐藏了某一方法的具体运行步骤,取而代之的是通过消息传递机制发送消息给它。封装是通过限制只有特定类的对象可以访问这一特定类的成员,而它们通常利用接口实现消息的传入传出。个人理解API就符合封装,需要的时候只需要调用并传递参数给API,API返回给你想要的内容,至于API内部是怎么实现的,我们并不不知道也不关心。
当然还有其他特性,这里我就不去抄袭维基百科了
面向对象编程是一种编程方式,它将与某数据类型相关的数据和操作封装到一起,集中管理。以上内容大多数来自维基百科,我只是个无情的搬运工