面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。
面向对象程序设计中的概念主要包括:对象(Object)、类(Class)、数据抽象、继承、动态绑定、数据封装(Encapsulation)、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。
Java | JavaScript |
---|---|
静态类型 | 动态类型 |
使用类,接口和枚举来定义类型 | 使用函数和原型来定义类型 |
在运行时类型无法改变 | 类型可以在运行时变更 |
需要给所有变量声明类型(强类型校验) | 声明变量时不需要指定类型(弱类型校验) |
构造器时特殊的方法 | 构造器也是一个函数,与其他函数没有区别 |
类和对象是不同的实体 | 包括构造器,函数原型在内的一切都是对象 |
支持静态方法和实例 | 不直接支持静态方法和实例 |
通过抽象类和接口支持抽象类型 | 不直接支持抽象类型 |
通过 private 、package 、protected 、public 定义对象的作用域 | 只支持 public 成员 |
提供丰富的继承机制 | 通过原型实现继承 |
支持方法级的重写和重载机制 | 不直接支持重写和重载 |
提供丰富的反射特性 | 具有一些反射特性 |
提供包提供模块化支持 | 没有直接的模块化支持 |