JavaScript 是一门支持面向对象编程(Object Oriented Programming,OOP)的语言,而多态作为面向对象编程的三大特性之一,对于我们编写复杂的应用程序来说,非常重要。
多态的概念及好处
多态是指同一个接口,不同的表现形态。在程序中,就是指一个类实例化之后,可以有多种不同的形态。
多态的好处是,增强程序的灵活性以及可扩展性。当我们需要添加新的形态时,只需要在实现新的子类即可,不需要修改原有的代码。
多态的实现方式
- 继承
使用继承的方式可以实现多态,即通过子类继承父类的方法之后,子类可以复写(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
的子类 Dog
和 Cat
。在子类中,我们都覆盖了 Animal
类的 speak()
方法,实现不同的行为。
- 接口
使用接口的方式也可以实现多态,即不同的类可以实现相同的接口,但实现的行为可以不同。在 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()
的对象 bird
和 plane
。通过函数 makeFly()
,我们将这两个对象作为参数传递,并调用它们的 fly()
方法。虽然 bird
和 plane
对象实现的 fly()
方法不同,但是都可以被正确调用。
小结
多态是面向对象编程的重要特性之一,可以增强程序的灵活性和可扩展性。在 JavaScript 中,多态可以通过继承和接口的方式来实现。我们需要根据具体情况来选择合适的实现方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 面向对象编程基础 多态 - Python技术站