JavaScript 中的类继承145


在 JavaScript 中,类继承是基于原型的,与其他语言(如 Java 或 C++)中的继承机制有所不同。JavaScript 中的类实际上是对象的蓝图,并且每个对象都继承自一个隐式原型对象,该对象包含该类的属性和方法。当子类从超类继承时,它获得对超类原型的访问权限,并可以覆盖或扩展其属性和方法。

要创建一个子类,可以使用 extends 关键字指定其超类。例如,以下代码创建了一个名为 ChildClass 的子类,它继承自 ParentClass:```js
class ParentClass {
constructor(name) {
= name;
}
greet() {
(`Hello, my name is ${}`);
}
}
class ChildClass extends ParentClass {
constructor(name, age) {
super(name);
= age;
}
introduce() {
(`Hi, I'm ${} and I'm ${} years old.`);
}
}
```

在子类 ChildClass 中,constructor() 方法调用了 super() 函数,它将 name 参数传递给超类的构造函数。子类还定义了一个新的方法 introduce(),可以覆盖超类中可能存在的方法。

重写(Overriding)方法:

当子类定义与超类同名的方法时,它会重写超类的方法。例如,如果 ParentClass 定义了一个 greet() 方法,而 ChildClass 也定义了一个 greet() 方法,则 ChildClass 的方法将覆盖超类的方法:```js
class ParentClass {
greet() {
(`Hello from the parent class!`);
}
}
class ChildClass extends ParentClass {
greet() {
(`Hello from the child class!`);
}
}
const child = new ChildClass();
(); // 输出: "Hello from the child class!"
```

访问超类属性:

子类可以通过 super 关键字访问超类的属性。例如,要访问 ParentClass 中的 name 属性, ChildClass 可以使用 :```js
class ParentClass {
constructor(name) {
= name;
}
}
class ChildClass extends ParentClass {
introduce() {
(`Hi, my name is ${}.`);
}
}
const child = new ChildClass('John');
(); // 输出: "Hi, my name is John."
```

多重继承:

JavaScript 不支持多重继承,即一个子类不能同时继承自多个超类。但是,可以使用 mixins(混合)来模拟多重继承的效果,其中一个类可以从多个其他类中“混合”属性和方法。

以下是实现多重继承的 mixin 示例:```js
// 定义一个 mixin,提供 getName() 方法
const NameMixin = {
getName() {
return ;
},
};
// 定义另一个 mixin,提供 getAge() 方法
const AgeMixin = {
getAge() {
return ;
},
};
// 定义一个使用 mixin 的类
class Person {
constructor(name, age) {
// 混合 NameMixin 和 AgeMixin
(this, NameMixin, AgeMixin);
= name;
= age;
}
}
const person = new Person('John', 30);
(()); // 输出: "John"
(()); // 输出: 30
```

注意: JavaScript 中的类继承并不是真正的继承,因为它基于原型,而不是创建一个新的对象。然而,它提供了一种基于原型的代码重用和扩展机制。

2025-01-19


上一篇:如何在 Python 中调用 JavaScript

下一篇:如何调试 JavaScript 故障