你不了解的JS笔记 - 第二部分 - 混合对象类

类继承描述了一种代码的组织结构形式,一种在软件中对真实世界中问题领域的建模方法

面向对象编程强调的是数据和操作数据的行为本质上是互相关联的,因此好的设计就是把数据以及和它相关的行为打包起来。这在正式的计算机科学中有时被称为数据结构

我们可以实用类对数据结构进行分类,把任意数据结构看作范围更广的定义的一种特例

类的另一个核心概念是多态,这个概念就是说父类的通用行为可以被子类用更特殊的行为重写。实际上,相对多态性允许我们从重写行为中引用基础行为

类理论强烈建议父类和子类使用相同的方法名来表示特定的行为,从而让子类重写父类


一个类就是一张蓝图,为了获得真正可以交互的对象,我们必须按照类来建造一个东西,这个东西通常被称为实例,有需要的话,我们可以直接在实例上调用方法并访问其所有共有数据属性。这个对象就是类中描述的所有特性的一份副本

通常不会使用一个实例对象来直接访问并操作它的类,不过至少可以判断出这个实例对象来自哪个类

类通过复制操作被实例化为对象形式

类实例是由一个特殊的类方法构造的,这个方法名通常和类名相同,被称为构造函数。这个方法的任务就是初始化实例需要的所有信息。

类构造函数属于类,而且通常和类同名,此外,构造函数大多需要用new来调,这样语言引擎才知道你想用构造一个新的类实例


在面向类的语言中,可以先定义一个类,然后定义一个继承前者的类,后者通常被称为子类,前者通常被称为父类。

定义好一个子类之后,相对于父类来说它就是一个独立并且完全不同的类。子类会包含父类行为的原始副本。但是也可以重写所有继承的行为甚至定义新行为

多态是一个很广泛的话题,相对是多态的一个方面:任何方法都可以引用继承层次中高层的方法(无论高层的方法名和当前方法名是否相同)。之所以说相对,是因为我们并不会定义想要访问的绝对继承层次,而是使用相对引用查找上一层

许多语言中可以用super,它的含义是超类,表示当前类的父类/祖先类,从子类的构造函数中通过super可以直接调用父类的构造函数。

多态的另一方面是,在继承链的不同层次中一个方法名可以被多次定义,当调用方法时会自动选择合适的定义

方法定义的多态性取决于是在哪个类的实例中引用它


在继承和实例化时,JS的对象机制并不会自动执行复制行为,JS中只有对象,并不存在可以被实例化的类,一个对象并不会被复制到其他对象,它们会被关联起来

posted @ 2025-06-15 11:46  永生辉皇  阅读(6)  评论(0)    收藏  举报