1. Наслідування класів
Наслідування на рівні об’єктів ми задавали
через __proto__ . На рівні класів це
можна роботи так:
ChildClass.prototype =
Object.create(ParentClass.prototype);
Наприклад:
Fox.prototype =
Object.create(Animal.prototype);
2. Розглянемо на прикладі Animal і його нащадка Fox.
function Animal(name) {
this.name = name;
this.mass = 1;
}
Animal.prototype.sayHi = function() {
alert( "Привіт, мене звати " + this.name );
}
function Fox(name) {
this.name = name;
this.mass = 1;
}
Fox.prototype = Object.create(Animal.prototype); // успадковування
Fox.prototype.cheat = function() {
alert( "Ходи до мене ближче, щоб я краще чула" );
}
var fox = new Fox("Лисичка-сестричка");
alert(fox.mass);
fox.cheat();
3. Слід подбати, щоб
Fox.prototype = Object.create(Animal.prototype);
було зразу після конструктора нащадка, інакше
перезаписалися б всі нові методи нащадка (у нас –
cheat() ).
Легко бачити, що у Animal і Fox повторюються код
this.name = name;
this.mass = 1;
Щоб цього уникнути, можна викликати код з Animal:
function Fox(name) {
Animal.apply(this, arguments);
}
4. При потребі у класі-нащадку можна перевизначити деякі
методи з батьківського класу.
Наприклад:
Fox.prototype.sayHi = function() {
alert( "Привіт, красунчику. Познайомимось ближче?" );
}
5. Задача 91
Напишіть клас Animal і його нащадки
– класи Hare, Wolf, Bear, Fox, які б
відображали основні риси тварин з казки
про колобка. Виконайте наочну графічну
реалізацію екземплярів класу.