Tässä opetusohjelmassa opit JavaScript-luokan perinnöstä esimerkkien avulla.
Luokan perintö
Perinnön avulla voit määrittää luokan, joka vie kaikki toiminnot vanhemmalta luokalta ja jonka avulla voit lisätä lisää.
Luokan perimistä käyttämällä luokka voi periä kaikki toisen luokan menetelmät ja ominaisuudet.
Perintö on hyödyllinen ominaisuus, joka mahdollistaa koodin uudelleenkäytettävyyden.
Voit käyttää luokan perintöä käyttämällä extends
avainsanaa. Esimerkiksi,
// 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();
Tuotos
Hei Jack
Yllä olevassa esimerkissä Student
luokka perii kaikki luokan menetelmät ja ominaisuudet Person
. Siksi Student
luokassa on nyt name
ominaisuus ja greet()
menetelmä.
Sitten pääsimme luokan greet()
menetelmään Student
luomalla student1
objektin.
JavaScript super () -avainsana
super
Avainsanan sisällä käytettävien lapsi luokka tarkoittaa sen vanhemman luokan. Esimerkiksi,
// 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();
Tässä super
sisällä Student
luokka viittaa Person
luokkaan. Siksi, kun Student
luokan konstruktoria kutsutaan, se kutsuu myös Person
luokan rakentajaa, joka antaa sille nimenomaisuuden.
Korvaava menetelmä tai ominaisuus
Jos lapsiluokalla on sama menetelmä tai ominaisuuden nimi kuin vanhemmalla luokassa, se käyttää lapsiluokan menetelmää ja ominaisuutta. Tätä käsitettä kutsutaan menetelmän ohittamiseksi. Esimerkiksi,
// 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();
Tuotos
Hei opiskelija Jack. ammatti: Opiskelija
Tässä occupation
ominaisuus ja greet()
menetelmä ovat läsnä vanhempien Person
luokassa ja Student
lapsiluokassa. Siksi Student
luokka ohittaa occupation
ominaisuuden ja greet()
menetelmän.
Perinnön käyttö
- Koska lapsiluokka voi periä kaikki vanhempien luokan toiminnot, tämä sallii koodin uudelleenkäytettävyyden.
- Kun toiminto on kehitetty, voit yksinkertaisesti periä sen. Pyörää ei tarvitse keksiä uudelleen. Tämä mahdollistaa puhtaamman koodin ja helpompi ylläpitää.
- Koska voit lisätä omia toimintoja lapsiluokkaan, voit periä vain hyödylliset toiminnot ja määrittää muut vaaditut ominaisuudet.