多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
比如,本人家里养了一只狗,一只猫。当主人向他们发出‘叫’的命令时。狗会汪汪的叫,而猫会喵喵的叫
多态背后的思想就是 ‘做什么’ 和 ‘谁去做’ 分离开,也就是把 ‘可变的事物’ 和 ‘不变的事物’ 分离开
以上的例子中可以说明,动物都会叫是不变的,不同的动物怎么叫是可变的
把不变的抽离出来,把可变的封装起来,这给予了我们扩张代码的能力,不管多少种动物,都可以增加代码的方式来实现,无需改变产生行为的代码。
实现多态的方式
class Behavior {
sound(sound) {
console.log("[ sound ] >", sound);
}
}
class Dog extends Behavior {
constructor(name) {
super();
this.name = name;
}
}
class Cat extends Behavior {
constructor(name) {
super();
this.name = name;
}
}
const dog = new Dog("dog");
const cat = new Cat("cat");
dog.sound("汪汪");//汪汪
cat.sound("喵喵");//喵喵
网友评论