Selles õpetuses saate näidete abil õppida JavaScripti klassi pärimist.
Klassipärand
Pärand võimaldab teil määratleda klassi, mis võtab kogu funktsionaalsuse vanemklassist ja võimaldab teil lisada rohkem.
Klassi pärimise abil saab klass pärida kõik teise klassi meetodid ja omadused.
Pärimine on kasulik funktsioon, mis võimaldab koodi uuesti kasutada.
Klassi pärimise kasutamiseks kasutate extends
märksõna. Näiteks,
// 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äljund
Tere Jack
Ülaltoodud näites Student
pärib klass kõiki klassi meetodeid ja omadusi Person
. Seega on Student
klassil nüüd name
omadus ja greet()
meetod.
Seejärel pääsesime klassi greet()
meetodi juurde Student
, luues student1
objekti.
JavaScripti super () märksõna
super
Märksõna kasutatakse sees lapse klassi tähistab oma vanema klassi. Näiteks,
// 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();
Siin super
sees Student
tasemega viitab Person
tasemega. Seega, kui Student
klassi konstruktorit kutsutakse, kutsub see ka Person
klassi konstruktorit, kes määrab talle nime omaduse.
Ülimuslik meetod või omadus
Kui lasteklassil on sama meetod või atribuudinimi kui vanematel, kasutab see lasteklasside meetodit ja omadust. Seda mõistet nimetatakse meetodi ülimuslikuks. Näiteks,
// 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äljund
Tere, õpilane Jack. amet: Üliõpilane
Siin on occupation
omadus ja greet()
meetod olemas vanemateklassis Person
ja Student
lasteklassis. Seega Student
alistab klass occupation
atribuudi ja greet()
meetodi.
Pärandi kasutusalad
- Kuna lapseklass võib pärida kõik vanema klassi funktsioonid, võimaldab see koodi taaskasutamist.
- Kui funktsionaalsus on välja töötatud, saate selle lihtsalt pärida. Pole vaja ratast uuesti leiutada. See võimaldab puhtamat koodi ja seda on lihtsam hooldada.
- Kuna lapseklassis saate lisada ka oma funktsionaalsusi, saate pärida ainult kasulikud funktsioonid ja määratleda muud vajalikud funktsioonid.