The 'šis' un ' super' atslēgvārdi ir rezervēti vārdi, kas tiek izmantoti citā kontekstā. Bez tam Java nodrošina arī šis () un super() konstruktori, kas tiek izmantoti konstruktora kontekstā. Šajā sadaļā mēs apspriedīsim atšķirības starp šo un super atslēgvārdu un šis() un super() konstruktors, Java valodā.
Linux $home
super atslēgvārds un super() konstruktors
super atslēgvārds
Rezervēts atslēgvārds, ko izmanto bāzes klases metodes vai mainīgā izsaukšanai, ir pazīstams kā a super atslēgvārds. Mēs nevaram izmantot super atslēgvārds kā an identifikators . Super atslēgvārds tiek izmantots ne tikai, lai atsauktos uz bāzes klases gadījumu, bet arī statiskiem dalībniekiem.
super() konstruktors
The super() galvenokārt izmanto bāzes klases locekļu funkciju un konstruktoru izsaukšanai.
Ņemsim piemēru gan no super atslēgvārds un super() lai saprastu, kā viņi strādā.
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'); } }
Izvade:
Main() metodē mēs esam izteikuši paziņojumu jauns superpiemērs1() . Tā izsauc konstruktoru Superpiemērs1 klasē.
Konstruktora iekšpusē mēs esam izteikuši paziņojumu super() kas izsauc savas vecākklases konstruktoru, t.i., kat. Konstruktorā esam snieguši trīs apgalvojumus:
java garš līdz virknei
- Inicializējiet krāsu ar vērtību 'Brūni'.
- Drukāt vecāku klases datu dalībnieku.
- Drukāt pašreizējo klases datu dalībnieku.
Kad tiek izpildīts otrais priekšraksts, programmas plūsma pāriet uz Animal klasi, lai piekļūtu tās datu dalībnieku vērtībai. Pēc piekļuves tam plūsma atgriežas kat klases konstruktors un izdrukā to. Pēc tam pēdējais paziņojums izpilda un izdrukā pašreizējās klases mainīgo vērtību.
Pēc pēdējā paziņojuma izpildes kat klasē, plūsma atgriežas pie klases konstruktora Superpiemērs1 un izpilda atlikušos paziņojumus.
tīģera un lauvas atšķirība
Pēc izpildes pabeigšanas Superpiemērs1() , plūsma atgriežas pie main() metodes un izpilda atlikušos paziņojumus.
Piezīme: Lai izmantotu super(), mums ir jāpārliecinās, ka tam ir jābūt pirmajam priekšrakstam klases konstruktorā. Mēs to varam izmantot, lai atsauktos tikai uz vecākklases konstruktoru.
šis atslēgvārds un šis() konstruktors
šo atslēgvārdu
Tas ir rezervēts atslēgvārds Java, ko izmanto, lai atsauktos uz pašreizējās klases objektu. Tas ir atsauces mainīgais, caur kuru tiek izsaukta metode. Citi šī atslēgvārda lietojumi ir:
- Mēs varam to izmantot, lai atsauktos uz pašreizējo klases instances mainīgo.
- Mēs varam to izmantot, lai (netieši) izsauktu pašreizējo klases metodi.
- Mēs to varam nodot kā argumentu metodes un konstruktora izsaukumos.
- Mēs to varam izmantot arī pašreizējās klases instances atgriešanai no metodes.
šis() konstruktors
Konstruktors tiek izmantots, lai izsauktu vienu konstruktoru no otras tās pašas klases. Ņemsim piemēru no abiem šis atslēgvārds un šis () lai saprastu, kā viņi strādā.
pitons vai
ŠisPiemērs1.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'); } }
Izvade:
Atšķirība starp šo un super atslēgvārdu
Šajā tabulā ir aprakstīta galvenā atšķirība starp šo un super:
šis | super |
---|---|
Pašreizējo klases gadījumu attēlo šis atslēgvārds. | Vecākās klases pašreizējo gadījumu attēlo superatslēgvārds. |
Lai izsauktu pašreizējās klases noklusējuma konstruktoru, mēs varam izmantot šo atslēgvārdu. | Lai izsauktu vecākklases noklusējuma konstruktoru, mēs varam izmantot atslēgvārdu super. |
Uz to var atsaukties no statiskā konteksta. Tas nozīmē, ka to var izsaukt no statiskā konteksta. | To nevar atsaukties no statiskā konteksta. Tas nozīmē, ka to nevar izsaukt no statiskā konteksta. |
Mēs varam to izmantot, lai piekļūtu tikai pašreizējiem klases datu dalībniekiem un dalībnieku funkcijām. | Mēs varam to izmantot, lai piekļūtu vecāku klases datu dalībniekiem un dalībnieku funkcijām. |
Atšķirība starp šo () un super () konstruktoru
šis () | super() |
---|---|
Konstruktors this() attiecas uz pašreizējās klases objektu. | Super() konstruktors atsaucas uz tūlītēju vecāku klases objektu. |
To izmanto pašreizējās klases metodes izsaukšanai. | To izmanto vecāku klases metožu izsaukšanai. |
To var izmantot jebkur parametrizētajā konstruktorā. | Tā vienmēr ir pirmā rinda bērnu klases konstruktorā. |
To izmanto, lai izsauktu ignorētas metodes superklases versiju. | To izmanto, lai izsauktu ignorētas metodes superklases versiju. |