关键词

javascript 面向对象编程基础 多态

JavaScript 是一门支持面向对象编程(Object Oriented Programming,OOP)的语言,而多态作为面向对象编程的三大特性之一,对于我们编写复杂的应用程序来说,非常重要。

多态的概念及好处

多态是指同一个接口,不同的表现形态。在程序中,就是指一个类实例化之后,可以有多种不同的形态。

多态的好处是,增强程序的灵活性以及可扩展性。当我们需要添加新的形态时,只需要在实现新的子类即可,不需要修改原有的代码。

多态的实现方式

  1. 继承

使用继承的方式可以实现多态,即通过子类继承父类的方法之后,子类可以复写(overwrite)父类的方法,并在方法体中实现不同的行为。

下面我们来看一个示例:

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  speak() {
    console.log(this.name + ' barks.');
  }
}

class Cat extends Animal {
  speak() {
    console.log(this.name + ' meows.');
  }
}

let dog = new Dog('Bob');
let cat = new Cat('Mimi');

dog.speak(); // Bob barks.
cat.speak(); // Mimi meows.

上述代码中,我们定义了一个父类 Animal 和两个继承自 Animal 的子类 DogCat。在子类中,我们都覆盖了 Animal 类的 speak() 方法,实现不同的行为。

  1. 接口

使用接口的方式也可以实现多态,即不同的类可以实现相同的接口,但实现的行为可以不同。在 JavaScript 中,接口是通过对象的属性和方法来描述。

下面我们来看一个示例:

let bird = {
  fly: function() {
    console.log('The bird is flying.');
  }
};

let plane = {
  fly: function() {
    console.log('The plane is flying.');
  }
};

function makeFly(obj) {
  obj.fly();
}

makeFly(bird); // The bird is flying.
makeFly(plane); // The plane is flying.

上述代码中,我们定义了两个拥有相同方法 fly() 的对象 birdplane。通过函数 makeFly(),我们将这两个对象作为参数传递,并调用它们的 fly() 方法。虽然 birdplane 对象实现的 fly() 方法不同,但是都可以被正确调用。

小结

多态是面向对象编程的重要特性之一,可以增强程序的灵活性和可扩展性。在 JavaScript 中,多态可以通过继承和接口的方式来实现。我们需要根据具体情况来选择合适的实现方式。

本文链接:http://task.lmcjl.com/news/9299.html

展开阅读全文