类 (Class)

182 阅读3分钟

类 Class

  • 类(Class)是面向对象编程中的一种重要概念,用于定义对象的结构和行为。类可以看作是对象的蓝图或模板,通过实例化类可以创建具体的对象。
  • 在JavaScript中,类的引入是通过ES6(ECMAScript 2015)引入的。它提供了一种更简洁和直观的方式来定义和创建对象。

基本语法:

class ClassName {
  // 构造函数
  constructor(/* 构造函数参数 */) {
    // 初始化对象的属性
  }

  // 方法定义
  method1(/* 参数 */) {
    // 方法体
  }

  method2(/* 参数 */) {
    // 方法体
  }

  // ...
}

  1. 类由关键字 class 开头,后面跟着类名(ClassName)。类名通常采用驼峰命名法,首字母大写。
  2. 类中的构造函数使用 constructor 关键字定义。构造函数在创建类的实例时被调用,用于初始化对象的属性。可以在构造函数中接受参数,并在实例化时传递相应的值给这些参数。
  3. 类中的方法定义直接写在类体内部。方法可以访问类的属性和其他方法。方法使用普通的函数语法来定义。
  • 创建类的实例,可以使用 new 关键字加上类名,并传递构造函数所需的参数。例如:
const obj = new ClassName(/* 构造函数参数 */);

示例:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
  }
}

const person = new Person('John', 25);
person.sayHello(); // 输出 "Hello, my name is John and I'm 25 years old."

  • 上述示例中,Person 类表示人的概念,具有 nameage 属性,以及 sayHello 方法。通过实例化 Person 类,我们创建了一个名为 person 的对象,并调用了 sayHello 方法。

类的继承 extends

  • 类可以继承其他类,通过 extends 关键字实现。子类可以继承父类的属性和方法,并可以添加自己特有的属性和方法。继承可以实现代码的复用和扩展性。

基本语法:

class ChildClass extends ParentClass {
  // 子类的构造函数
  constructor(/* 构造函数参数 */) {
    // 调用父类的构造函数
    super(/* 构造函数参数 */);
    // 子类的其他初始化代码
  }

  // 子类的方法
  childMethod() {
    // 方法体
  }
}

  1. 在子类的类定义中,使用 extends 关键字后面跟着父类的名称(ParentClass)。子类可以继承父类的属性和方法,并可以添加自己的属性和方法。
  2. 在子类的构造函数中,使用 super 关键字调用父类的构造函数。这是为了在子类的实例化过程中初始化父类的属性。需要注意的是,在使用 super 调用父类构造函数之前,不能使用 this 关键字。

示例:


class Animal {
  constructor(name) {
    this.name = name;
  }

  sayHello() {
    console.log(`Hello, I'm ${this.name}`);
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name);
    this.breed = breed;
  }

  bark() {
    console.log('Woof Woof!');
  }
}

const dog = new Dog('Buddy', 'Labrador');
dog.sayHello(); // 输出 "Hello, I'm Buddy"
dog.bark(); // 输出 "Woof Woof!"

  • 在上述示例中,Animal 是父类,Dog 是子类。Dog 类继承了 Animal 类,并通过 super 调用了父类的构造函数,以初始化继承的属性。子类还添加了自己的方法 bark
  • 通过继承,子类可以共享父类的属性和方法,同时还可以添加自己特有的属性和方法。这使得代码的重用和扩展更加方便和灵活。