多态:一种定义,多种表现。
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()

本文介绍JavaScript如何通过class和instanceof实现多态性,演示了不同子类实例在父类方法中的动态行为,展示了多态在面向对象编程中的应用。
217

被折叠的 条评论
为什么被折叠?



