V tomto kurzu se na příkladech dozvíte o dědičnosti tříd JavaScriptu.
Dědičnost třídy
Dědičnost umožňuje definovat třídu, která přebírá všechny funkce z nadřazené třídy a umožňuje přidat další.
Pomocí dědičnosti třídy může třída zdědit všechny metody a vlastnosti jiné třídy.
Dědičnost je užitečná funkce, která umožňuje opětovné použití kódu.
Chcete-li použít dědičnost třídy, použijete extends
klíčové slovo. Například,
// parent class class Person ( constructor(name) ( this.name = name; ) greet() ( console.log(`Hello $(this.name)`); ) ) // inheriting parent class class Student extends Person ( ) let student1 = new Student('Jack'); student1.greet();
Výstup
Ahoj Jacku
Ve výše uvedeném příkladu Student
třída zdědí všechny metody a vlastnosti Person
třídy. Proto Student
třída bude mít nyní name
vlastnost a greet()
metodu.
Poté jsme přistoupili k greet()
metodě Student
třídy vytvořením student1
objektu.
Klíčové slovo JavaScript super ()
super
Klíčové slovo používá uvnitř třídy podřízené označuje svou rodičovskou třídu. Například,
// parent class class Person ( constructor(name) ( this.name = name; ) greet() ( console.log(`Hello $(this.name)`); ) ) // inheriting parent class class Student extends Person ( constructor(name) ( console.log("Creating student class"); // call the super class constructor and pass in the name parameter super(name); ) ) let student1 = new Student('Jack'); student1.greet();
Zde super
vnitřní Student
třída odkazuje na Person
třídu. Když se tedy Student
volá konstruktor Person
třídy, volá také konstruktor třídy, který mu přiřadí vlastnost name.
Přepisující metoda nebo vlastnost
Pokud má podřízená třída stejný název metody nebo vlastnosti jako nadřazená třída, použije metodu a vlastnost podřízené třídy. Tento koncept se nazývá přepsání metody. Například,
// parent class class Person ( constructor(name) ( this.name = name; this.occupation = "unemployed"; ) greet() ( console.log(`Hello $(this.name).`); ) ) // inheriting parent class class Student extends Person ( constructor(name) ( // call the super class constructor and pass in the name parameter super(name); // Overriding an occupation property this.occupation = 'Student'; ) // overriding Person's method greet() ( console.log(`Hello student $(this.name).`); console.log('occupation: ' + this.occupation); ) ) let p = new Student('Jack'); p.greet();
Výstup
Ahoj studente Jacku. povolání: student
Zde jsou occupation
vlastnost a greet()
metoda přítomny v nadřazené Person
třídě a podřízené Student
třídě. Z tohoto důvodu je Student
třída přepíše occupation
vlastnost a greet()
metodu.
Použití dědičnosti
- Protože podřízená třída může zdědit všechny funkce třídy rodiče, umožňuje to opětovné použití kódu.
- Jakmile je funkce vyvinuta, můžete ji jednoduše zdědit. Není třeba znovu objevovat kolo. To umožňuje čistší kód a snadnější údržbu.
- Protože do podřízené třídy můžete také přidat své vlastní funkce, můžete zdědit pouze užitečné funkce a definovat další požadované funkce.