V tej vadnici boste s pomočjo primerov spoznali dedovanje razreda JavaScript.
Razredno dedovanje
Dedovanje vam omogoča, da definirate razred, ki prevzame vse funkcije nadrejenega razreda in vam omogoča, da dodate več.
Z dedovanjem razreda lahko razred podeduje vse metode in lastnosti drugega razreda.
Dedovanje je koristna funkcija, ki omogoča ponovno uporabo kode.
Če želite uporabiti dedovanje razreda, uporabite extends
ključno besedo. Na primer
// 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();
Izhod
Pozdravljen Jack
V zgornjem primeru Student
razred podeduje vse metode in lastnosti Person
razreda. Tako bo Student
razred zdaj imel name
lastnost in greet()
metodo.
Nato smo do greet()
metode Student
razreda dostopali z ustvarjanjem student1
predmeta.
Ključna beseda JavaScript super ()
Ključna super
beseda, uporabljena znotraj podrejenega razreda, označuje nadrejeni razred. Na primer
// 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();
Tu se super
notranji Student
razred nanaša na Person
razred. Ko Student
torej pokličete konstruktor razreda, pokliče tudi konstruktor Person
razreda, ki mu dodeli imensko lastnost.
Preglasitev metode ali lastnosti
Če ima podrejeni razred enako metodo ali ime lastnosti kot ime nadrejenega razreda, bo uporabil metodo in lastnost podrejenega razreda. Ta koncept se imenuje preglasitev metode. Na primer
// 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();
Izhod
Pozdravljeni študent Jack. poklic: študent
Tu sta occupation
lastnosti in greet()
metoda prisotni v nadrejenem Person
razredu in podrejenem Student
razredu. Zato Student
razred preglasi occupation
lastnost in greet()
metodo.
Uporabe dedovanja
- Ker lahko podrejeni razred podeduje vse funkcionalnosti nadrejenega razreda, to omogoča ponovno uporabo kode.
- Ko je funkcionalnost razvita, jo lahko preprosto podedujete. Kola ni treba znova izumljati. To omogoča čistejšo kodo in lažje vzdrževanje.
- Ker lahko v razred otroka dodate tudi lastne funkcije, lahko podedujete samo uporabne funkcionalnosti in določite druge zahtevane funkcije.