引言
ECMAScript 2015 引入了 class 关键字,让 JavaScript 更加接近传统的面向对象编程语言。然而,class 关键字的出现并不代表着 JavaScript 具备了传统面向对象编程语言中的所有特性,其中一个缺失的特性就是继承。不过,ECMAScript 2016 对 class 关键字进行了扩展,使得它可以支持继承。本文将介绍如何使用 ECMAScript 2016 的 class 关键字来实现继承。
继承的基本概念
在面向对象编程中,继承(Inheritance)是指一个类(子类)继承另一个类(父类)的属性和方法。通过继承,子类可以直接使用父类的属性和方法,同时也可以添加自己的属性和方法,从而实现代码的重用和扩展。继承的基本概念如下所示:
父类 | |(继承) | 子类 | |(重写) | 子类的实例
使用 class 关键字实现继承
在 ECMAScript 2016 中,我们可以使用 class 关键字来实现继承。具体来说,我们可以通过 extends 关键字来继承父类,通过 super 关键字来调用父类的构造函数和方法。下面是一个简单的示例代码:
class Animal { constructor(name, age) { this.name = name; this.age = age; } speak() { console.log('Animal speaks.'); } } class Dog extends Animal { constructor(name, age, breed) { super(name, age); this.breed = breed; } speak() { console.log('Dog barks.'); } } const myDog = new Dog('Max', 3, 'Golden Retriever'); console.log(`Name: ${myDog.name}`); console.log(`Age: ${myDog.age}`); console.log(`Breed: ${myDog.breed}`); myDog.speak(); // 输出: 'Dog barks.'
在上面的示例代码中,我们定义了一个 Animal 类和一个 Dog 类,其中 Dog 类继承自 Animal 类。在 Dog 类的构造函数中,我们通过 super 关键字来调用父类的构造函数,并在子类中添加了自己的属性 breed。我们还重写了父类的方法 speak(),从而实现了子类对父类的方法的扩展。
总结
ECMAScript 2016 引入了 class 关键字的扩展,使得 JavaScript 可以支持继承。在使用 class 关键字实现继承时,我们可以通过 extends 关键字实现继承,通过 super 关键字调用父类的构造函数和方法,从而实现代码的重用和扩展。掌握 ECMAScript 2016 的 class 关键字对于进一步提高 JavaScript 的面向对象编程能力和开发效率有很大的帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a388d2add4f0e0ffbae4e0