你不了解的JS笔记 - 第二部分 - 混合对象类
类继承描述了一种代码的组织结构形式,一种在软件中对真实世界中问题领域的建模方法
面向对象编程强调的是数据和操作数据的行为本质上是互相关联的,因此好的设计就是把数据以及和它相关的行为打包起来。这在正式的计算机科学中有时被称为数据结构
我们可以实用类对数据结构进行分类,把任意数据结构看作范围更广的定义的一种特例
类的另一个核心概念是多态,这个概念就是说父类的通用行为可以被子类用更特殊的行为重写。实际上,相对多态性允许我们从重写行为中引用基础行为
类理论强烈建议父类和子类使用相同的方法名来表示特定的行为,从而让子类重写父类
一个类就是一张蓝图,为了获得真正可以交互的对象,我们必须按照类来建造一个东西,这个东西通常被称为实例,有需要的话,我们可以直接在实例上调用方法并访问其所有共有数据属性。这个对象就是类中描述的所有特性的一份副本
通常不会使用一个实例对象来直接访问并操作它的类,不过至少可以判断出这个实例对象来自哪个类
类通过复制操作被实例化为对象形式
类实例是由一个特殊的类方法构造的,这个方法名通常和类名相同,被称为构造函数。这个方法的任务就是初始化实例需要的所有信息。
类构造函数属于类,而且通常和类同名,此外,构造函数大多需要用new来调,这样语言引擎才知道你想用构造一个新的类实例
在面向类的语言中,可以先定义一个类,然后定义一个继承前者的类,后者通常被称为子类,前者通常被称为父类。
定义好一个子类之后,相对于父类来说它就是一个独立并且完全不同的类。子类会包含父类行为的原始副本。但是也可以重写所有继承的行为甚至定义新行为
多态是一个很广泛的话题,相对是多态的一个方面:任何方法都可以引用继承层次中高层的方法(无论高层的方法名和当前方法名是否相同)。之所以说相对,是因为我们并不会定义想要访问的绝对继承层次,而是使用相对引用查找上一层
许多语言中可以用super,它的含义是超类,表示当前类的父类/祖先类,从子类的构造函数中通过super可以直接调用父类的构造函数。
多态的另一方面是,在继承链的不同层次中一个方法名可以被多次定义,当调用方法时会自动选择合适的定义
方法定义的多态性取决于是在哪个类的实例中引用它
在继承和实例化时,JS的对象机制并不会自动执行复制行为,JS中只有对象,并不存在可以被实例化的类,一个对象并不会被复制到其他对象,它们会被关联起来

浙公网安备 33010602011771号