(上二)4-混合对象“类”

前言

本节内容基本全是概念和理论,其中的重难点已经记录在小结中…

小结

1. 面向对象编程和类?

面向对象编程(Object Oriented Programming,OOP,面向对象程序设计),是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。OOP达到了软件工程的三 个目标:重用性、灵活性和扩展性。

面向对象编程是相对于面向过程而言的。

  • 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。
  • 而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

面向对象编程中的两个核心概念就是类和实例化。面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以,面向对象的设计思想就是抽象出 Class,根据 Class创建 Instance

是具有相同属性和服务的一组对象的集合,描述了一种代码的组织结构形式(一种在软件中对真实世界中问题领域的建模方法)。

2. JS 中的类是什么?

在相当长的一段时间里,JavaScript 只有一些近似类的语法元素 (比如 newinstanceof),在后来的 ES6 中新增了一些元素,比如 class 关键字。

但这并不是意味着 JavaScript 中有了类。在近似类的表象之下,JavaScript 的机制其实和类完全不同。语法糖和(广泛使用的) JavaScript“类”库试图掩盖这个现实,但是你迟早会面对它:其他语言中的类和 JavaScript 中的“类”并不一样。

3. 封装、继承和多态?

封装:把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节

继承:通过继承实现类的特化(specialization)/泛化(generalization)。在 OOP 程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。实现类的特化(specialization)/泛化(generalization)

  • 继承可以使子类获得了父类的全部功能,子类也可以增加一些方法
  • 多态

多态:通过多态(polymorphism,在继承链的不同层次名称相同但是功能不同的函数)实现基于对象类型的动态分派(dynamic dispatch)。其本质是子类通过覆盖或重载父类的方法,来使得对同一类对象同一方法的调用产生不同的结果。

0%