多态:一种定义,多种表现。
JS通过自身特点及instance of来模拟出多态的效果
实现:
class D{//多态
constructor(obj){
this.Dway=function(){
if(obj instanceof Pets){//对传入的参数进行判断,判断是否是某个类的实例
console.log(obj.way() )
}else{
throw new Error
}
}
}
}
class Pets{
constructor(name){
this.name=name;
this.way=function(){
console.log(`重写`)
}
}
}
class Dogs extends Pets{
constructor(name,age){
super(name);
this.age=age;
this.way=function(){
return `${this.age}岁的${this.name}进食中`
}
}
}
class Cats extends Pets{
constructor(name,age){
super(name);
this.age=age;
this.way=function(){
return `${this.age}岁的${this.name}进食中`
}
}
}
class Fish {
constructor(name,age){
this.name=name;
this.age=age;
this.way=function(){
return `${this.age}岁的${this.name}进食中`
}
}
}
var Dog1=new Dogs('Ann','1')
var Cat1=new Cats('Kitty','2')
var Fish1=new Fish('Bubble','0.6')
var D1=new D(Dog1)
var D2=new D(Cat1)
var D3=new D(Fish1)
D1.Dway()
D2.Dway()
D3.Dway()