Ich versuche, Polymorphismus durch ES6 Klassen zu emulieren, um in der Lage zu sein, diese Theorie besser zu verstehen.ES6 Klassen Fähigkeit, Polymorphie durchzuführen
Das Konzept ist klar (Entwerfen von Objekten, um Verhaltensweisen zu teilen und gemeinsame Verhaltensweisen mit bestimmten zu überschreiben), aber ich fürchte, mein Code oben ist kein gültiges Polymorphie-Beispiel.
Aufgrund meines Mangels an Erfahrung, ich schätze, wenn Sie diese Fragen in umfassenden Weise zu beantworten:
- Die Tatsache, dass beide Klassen haben einen ebenso Methode mit dem Namen, und das aus jeder Klasse gemacht Instanzen Zugriff korrekt erhalten zu ihren jeweiligen Methoden macht dies ein polymorphes Beispiel?
- Falls Polimorphismus nicht emuliert wird, welche Änderungen sollten im Code dafür vorgenommen werden?
- Ich habe versucht, die
Employee.prototype = new Person();
Zeile zu entfernen, und es funktioniert immer noch. Deshalb habe ich Angst, dass ich dieses Konzept nicht verstehe.
class Person {
constructor (name, age) {
this._name = name;
this._age = age;
}
}
Person.prototype.showInfo = function(){
return "Im " + this._name + ", aged " + this._age;
};
class Employee {
constructor (name, age, sex) {
this._name = name;
this._age = age;
this._sex = sex;
}
}
Employee.prototype = new Person();
Employee.prototype.showInfo = function(){
return "Im " + this._sex + ", named " + this._name + ", aged " + this._age;
};
var myPerson = new Person('Jon', 20);
var myEmployee = new Employee('Doe', 10, 'men');
document.write(myPerson.showInfo() + "<br><br>"); // Im Jon, aged 20
document.write(myEmployee.showInfo() + "<br><br>"); // Im men, named Doe, aged 10
'Employee.prototype = new Person()' sollte nicht mit ES6 verwendet werden. Es ist in etwa eine Sache, die "erweitert" mehr oder weniger tut. Wenn Sie daran interessiert sind, wie JS prototypische Vererbung funktioniert, würde ich vorschlagen, mit ES5 zu beginnen, da ES6-Klassen syntaktischer Zucker für vorhandene ES5-Vererbungsrezepte sind. – estus
Subtyp Polymorphismus ist eine Sackgasse. Schauen Sie stattdessen in den parametrischen/Ad-hoc-Polymorphismus. – ftor