在 ES6 中,我们可以使用 class 关键字来定义一个类,以及使用 extends 关键字来实现类的继承。这些新特性使得 JavaScript 中的面向对象编程更加直观和易于理解。本文将详细介绍 ES6 中的 class 和继承,并提供一些实际的使用示例。
class
在 ES6 中,我们可以使用 class 关键字来定义一个类。一个类可以包含构造函数、方法和属性。
构造函数
类中的构造函数使用 constructor 方法来定义。构造函数用于创建类的实例,并初始化类的属性。
下面是一个简单的类定义,其中包含一个构造函数:
class Person { constructor(name, age) { this.name = name; this.age = age; } }
在这个例子中,我们定义了一个名为 Person 的类,它有两个属性:name 和 age。构造函数使用这两个参数来初始化这些属性。
方法
类中的方法定义和普通函数定义非常相似。我们可以使用类的名称和方法名称来定义一个方法。方法可以访问类的属性和其他方法。
下面是一个简单的类定义,其中包含一个方法:
-- -------------------- ---- ------- ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ---------- - ------------------- -- ---- -- ------------ --- --- ----------- ----- ------- - -展开代码
在这个例子中,我们定义了一个名为 sayHello 的方法,它打印出一个问候语,包含了类的属性。
属性
类中的属性定义和普通对象的属性定义非常相似。我们可以在构造函数中使用 this 关键字来定义一个属性。
下面是一个简单的类定义,其中包含一个属性:
class Person { constructor(name, age) { this.name = name; this.age = age; this.gender = 'unknown'; } }
在这个例子中,我们定义了一个名为 gender 的属性,并将其初始化为 'unknown'。
继承
在 ES6 中,我们可以使用 extends 关键字来实现类的继承。子类可以继承父类的属性和方法,并可以添加自己的属性和方法。
父类和子类
在实现继承之前,我们需要先定义一个父类和一个子类。父类包含一些通用的属性和方法,而子类则可以继承这些通用的属性和方法,并添加自己的特定属性和方法。
下面是一个简单的父类定义:
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - ---------- - ------------------- -- ---- -- ---------------- - -展开代码
在这个例子中,我们定义了一个名为 Animal 的类,它有一个属性 name 和一个方法 sayHello。
下面是一个简单的子类定义:
class Dog extends Animal { bark() { console.log('Woof!'); } }
在这个例子中,我们定义了一个名为 Dog 的子类,它继承了 Animal 类的属性和方法,并添加了一个名为 bark 的方法。
super 关键字
在子类中,我们可以使用 super 关键字来调用父类的构造函数和方法。在构造函数中,我们使用 super 关键字来调用父类的构造函数并初始化父类的属性。在方法中,我们使用 super 关键字来调用父类的方法。
下面是一个使用 super 关键字的例子:
-- -------------------- ---- ------- ----- --- ------- ------ - ----------------- ------ - ------------ ---------- - ------ - ------ - ----------------- --------------------- - -展开代码
在这个例子中,我们定义了一个名为 Dog 的子类,并在构造函数中使用 super 关键字来调用父类的构造函数并初始化父类的属性。在 bark 方法中,我们使用 super 关键字来调用父类的 sayHello 方法,并在其后面添加自己的逻辑。
示例
下面是一个使用类和继承的示例。我们定义了一个 Animal 类和两个子类 Cat 和 Dog。每个子类都有自己的特定属性和方法。
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - ---------- - ------------------- -- ---- -- ---------------- - - ----- --- ------- ------ - ----------------- ------ - ------------ ---------- - ------ - ------ - --------------------- - - ----- --- ------- ------ - ----------------- ------ - ------------ ---------- - ------ - ------ - --------------------- - - ----- --- - --- --------------- -------- --------------- -- ------- -- ---- -- ---------- ----------- -- ------- ----- --- - --- ----------- ------- ------------ --------------- -- ------- -- ---- -- ------ ----------- -- -------展开代码
在这个例子中,我们定义了一个 Animal 类和两个子类 Cat 和 Dog。每个子类都继承了 Animal 类的属性和方法,并添加了自己的特定属性和方法。我们创建了一个 Cat 实例和一个 Dog 实例,并调用它们的方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67cae003e46428fe9e376529