The 'Tämä' ja ' super' avainsanat ovat varattuja sanoja, joita käytetään eri kontekstissa. Tämän lisäksi Java tarjoaa myös Tämä() ja super() rakentajat, joita käytetään rakentajan kontekstissa. Tässä osiossa keskustelemme eroja tämän ja super-avainsanan välillä ja tämä()- ja super()-konstruktori, Javassa.
super-avainsana ja super()-konstruktori
super avainsana
Varattu avainsana, jota käytetään kutsumaan perusluokan metodia tai muuttujaa, tunnetaan nimellä a super avainsana. Emme voi käyttää super avainsanana tunniste . Super-avainsanaa ei käytetä vain viittaamaan perusluokan esiintymään, vaan myös staattisiin jäseniin.
super() rakentaja
The super() käytetään pääasiassa perusluokan jäsenfunktioiden ja konstruktorien kutsumiseen.
Otetaan esimerkki molemmista super avainsana ja super() ymmärtääkseen kuinka ne toimivat.
tekniikan edut ja haitat
SuperExample1.java
// import required classes and packages package javaTpoint.MicrosoftJava; // create Animal class which is base class of Animal class Animal{ // data member of Animal class String color = 'white'; } // create child class of Animal class Cat extends Animal{ //default constructor Cat() { // data members of the Cat class String color = 'Brown'; System.out.println('The cat is of color '+super.color); // calling parent class data member System.out.println('The cat is of color '+color); } } // create child class for Car class SuperExample1 extendsCat { // default constructor SuperExample1() { // calling base class constructor super(); System.out.println('The eyes of the cat is blue.'); } // main() method start publicstaticvoid main(String[] args) { // call default constructor of the SuperExample1 new SuperExample1(); System.out.println('Inside Main'); } }
Lähtö:
git push -komento
Main()-menetelmässä olemme tehneet lausunnon uusi superesimerkki1() . Se kutsuu rakentajaa Superesimerkki1 luokkaa.
Rakentajan sisällä olemme antaneet lausunnon super() joka kutsuu emoluokkansa konstruktoria, ts. Kissa. Rakentajassa olemme tehneet kolme lausuntoa:
- Alusta väri arvolla 'Ruskea'.
- Tulosta vanhemman luokan tiedot jäsen.
- Tulosta nykyinen luokan datajäsen.
Kun toinen käsky suoritetaan, ohjelman kulku hyppää Animal-luokkaan päästäkseen käsiksi sen datajäsenten arvoon. Kun olet käyttänyt sitä, virtaus palaa takaisin Kissa luokan rakentaja ja tulostaa sen. Tämän jälkeen viimeinen lause suorittaa ja tulostaa nykyisen luokan muuttujien arvon.
Viimeisen lauseen suorittamisen jälkeen Kissa luokka, virtaus palaa luokan rakentajalle Superesimerkki1 ja suorittaa loput lausunnot.
Suorituksen suorittamisen jälkeen Superesimerkki1() , vuo palaa main()-metodiin ja suorittaa loput käskyt.
javafx on eclipse
Huomautus: Jotta voisimme käyttää super(:ta), meidän on varmistettava, että sen tulee olla ensimmäinen lause luokan rakentajassa. Voimme käyttää sitä viittaamaan vain pääluokan rakentajaan.
tämä avainsana ja tämä()-konstruktori
tämä avainsana
Se on Javassa varattu avainsana, jota käytetään viittaamaan nykyiseen luokkaobjektiin. Se on viitemuuttuja, jonka kautta menetelmää kutsutaan. Muita tämän avainsanan käyttötapoja ovat:
- Voimme käyttää sitä viittaamaan nykyiseen luokan esiintymän muuttujaan.
- Voimme käyttää sitä nykyisen luokan menetelmän kutsumiseen (implisiittisesti).
- Voimme välittää sen argumenttina metodi- ja konstruktorikutsuissa.
- Voimme käyttää sitä myös nykyisen luokan ilmentymän palauttamiseen menetelmästä.
tämä() rakentaja
Konstruktoria käytetään kutsumaan yhtä konstruktoria toisesta saman luokan konstruktoria. Otetaan esimerkki molemmista Tämä avainsana ja Tämä() ymmärtääkseen kuinka ne toimivat.
javascript-merkkijono korvaa
TämäEsimerkki1.java
// import required classes and packages package javaTpoint.MicrosoftJava; // create ThisExample1 class to understand the working of this() and this class ThisExample1 { // initialize instance and static variable int x = 5; staticinty = 10; // default constructor of class ThisExample1 ThisExample1() { // invoking current class constructor this(5); System.out.println('We are insie of the default constructor.'); System.out.println('The value of x = '+x); } ThisExample1(int x) { this.x = x; // override value of the current class instance variable System.out.println('We are inside of the parameterized constructor.'); System.out.println('The value of y = '+y); } publicstaticvoid main(String[] args) { // invoking constructor of the current class new ThisExample1(); System.out.println('Inside Main'); } }
Lähtö:
Ero tämän ja super-avainsanan välillä
Seuraavassa taulukossa kuvataan tärkein ero tämän ja superin välillä:
Tämä | super |
---|---|
Luokan nykyistä esiintymää edustaa tämä avainsana. | Pääluokan nykyistä esiintymää edustaa superavainsana. |
Voimme käyttää tätä avainsanaa kutsuaksemme nykyisen luokan oletuskonstruktoria. | Pääluokan oletuskonstruktorin kutsumiseksi voimme käyttää super-avainsanaa. |
Siihen voidaan viitata staattisesta kontekstista. Se tarkoittaa, että se voidaan kutsua staattisesta kontekstista. | Siihen ei voida viitata staattisesta kontekstista. Se tarkoittaa, että sitä ei voida vedota staattisesta kontekstista. |
Voimme käyttää sitä vain nykyisten luokan tietojen jäsenten ja jäsentoimintojen käyttämiseen. | Voimme käyttää sitä päästäksemme pääluokan datajäseniin ja jäsentoimintoihin. |
Ero tämän()- ja super()-konstruktorin välillä
Tämä() | super() |
---|---|
This()-konstruktori viittaa nykyiseen luokkaobjektiin. | Super()-konstruktori viittaa välittömään yläluokkaobjektiin. |
Sitä käytetään nykyisen luokan menetelmän kutsumiseen. | Sitä käytetään pääluokan menetelmien kutsumiseen. |
Sitä voidaan käyttää missä tahansa parametroidussa konstruktorissa. | Se on aina ensimmäinen rivi lapsiluokan konstruktorissa. |
Sitä käytetään ohitetun menetelmän superluokan version kutsumiseen. | Sitä käytetään ohitetun menetelmän superluokan version kutsumiseen. |