Javascript中的多态性是什么?

我读了一些可能的文章,我可以在互联网上找到多态性。但我想我不能完全理解它的含义和重要性。大多数文章都没有说明它为什么重要,以及如何在OOP(当然是JavaScript)中实现多态行为

我无法提供任何代码示例,因为我不知道如何实现它,因此我的问题如下:

  1. 这是什么
  2. 我们为什么需要它
  3. 它是如何工作的
  4. 如何在javascript中实现这种多态行为

我有这个例子。但这段代码的结果很容易理解。它没有给出多态性本身的任何清晰的概念

功能人员(年龄、体重){
这个。年龄=年龄;
重量=重量;
this.getInfo=函数(){
返回“我是”+这个年龄+“岁”+
重量为“+这个重量+”公斤。”;
}
}
职能员工(年龄、体重、工资){
这个。薪水=薪水;
这个。年龄=年龄;
重量=重量;
this.getInfo=函数(){
返回“我是”+这个年龄+“岁”+
重量为“+此重量+千克”+
“并赚取“+这个工资+”美元。”;
}
}
Employee.prototype=新员工();
Employee.prototype.constructor=员工;
//参数“obj”可以是任何类型的
//要执行的方法getInfo()取决于对象
//“obj”指的是。
功能显示信息(obj){
document.write(obj.getInfo()+“<br>”);
}
var人员=新人员(50,90);
var员工=新员工(43,8050000);
showInfo(个人);
showInfo(员工);

多态性是面向对象编程(OOP)的原则之一。它是设计对象以共享行为并能够用特定行为覆盖共享行为的实践。多态性利用继承来实现这一点

在OOP中,一切都被认为是作为对象建模的。这种抽象可以一直延伸到汽车的螺母和螺栓,也可以延伸到具有年份、品牌和型号的汽车类型

要有一个多态汽车场景,将有基本汽车类型,然后将有子类继承自汽车,并在汽车的基本行为之上提供自己的行为。例如,子类可以是Towthruck,它仍然有一年的品牌和型号,但也可能有一些额外的行为和属性,这些行为和属性可以像IsTowing的旗帜一样基本,也可以像升降机的细节一样复杂

回到人和员工的例子,所有员工都是人,但不是所有人都是员工。也就是说,人是上层阶级,雇员是下层阶级。人们可能有年龄和体重,但他们没有薪水。员工是人,因此他们天生就有年龄和体重,但也因为他们是员工,所以他们会有薪水

所以为了方便这一点,我们将首先写出超级类(Person)

功能人员(年龄、体重){
这个。年龄=年龄;
重量=重量;
}

我们将让人们能够分享他们的信息

Person.prototype.getInfo=function(){
返回“我是”+这个年龄+“岁”+
重量为“+这个重量+”公斤。”;
};

接下来我们希望有一个子类Person,Employee

职能员工(年龄、体重、工资){
这个。年龄=年龄;
重量=重量;
这个。薪水=薪水;
}
Employee.prototype=新员工();

我们将通过定义一个更适合员工的行为来覆盖getInfo的行为

Employee.prototype.getInfo=function(){
返回“我是”+这个年龄+“岁”+
重量为“+此重量+千克”+
“并赚取“+这个工资+”美元。”;
};

这些代码的使用方法与原始代码的使用方法类似

var person=新人(50,90);
var员工=新员工(43,8050000);
console.log(person.getInfo());
console.log(employee.getInfo());

然而,在这里使用继承并没有什么好处,因为Employee的构造函数与person的构造函数非常相似,并且原型中唯一的函数被重写。多态设计的力量在于分享行为

发表评论