logo

Különbség ez és a szuper között Java-ban

A 'ez' és a ' szuper' A kulcsszavak foglalt szavak, amelyeket más kontextusban használnak. Ezen kívül a Java is biztosítja ez() és szuper() a konstruktor környezetben használt konstruktorok. Ebben a részben a különbségek ez és a szuper kulcsszó között és ez() és szuper() konstruktor, Java nyelven.

szuper kulcsszó és szuper() konstruktor

szuper kulcsszó

Az alaposztály metódusának vagy változójának meghívására használt fenntartott kulcsszó a szuper kulcsszó. Nem tudjuk használni a szuper kulcsszó mint an azonosító . A szuper kulcsszó nem csak az alaposztálypéldányra vonatkozik, hanem a statikus tagokra is.

szuper() konstruktor

A szuper() főként alaposztálytag függvények és konstruktorok meghívására szolgál.

Bourne-Ain shell

Vegyünk egy példát mindkettőre szuper kulcsszó és szuper() hogy megértsék, hogyan működnek.

SzuperPélda1.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'); } } 

Kimenet:

ez vs szuper Java-ban

A main() metódusban állítást tettünk új szuperpélda1() . Meghívja a konstruktort a SzuperPélda1 osztály.

A kivitelezőn belül nyilatkozatot tettünk szuper() amely meghívja szülőosztályának konstruktorát, azaz Macska. A konstruktorban három állítást tettünk:

  1. A szín inicializálása értékkel 'Barna'.
  2. Szülőosztály adattagjának nyomtatása.
  3. Aktuális osztályadattag nyomtatása.

Amikor a második utasítás végrehajtódik, a program folyamata az Animal osztályba ugrik, hogy hozzáférjen az adattagjainak értékéhez. Miután elérte, az áramlás visszatér a Macska osztályú konstruktort, és kinyomtatja. Ezt követően az utolsó utasítás végrehajtja és kiírja az aktuális osztály változóinak értékét.

Az utolsó utasítás végrehajtása után Macska osztályban, az áramlás visszatér az osztály konstruktorához SzuperPélda1 és végrehajtja a többi utasítást.

a monitorom mérete

A végrehajtás befejezése után a SzuperPélda1() , a folyamat visszatér a main() metódushoz, és végrehajtja a fennmaradó utasításokat.

Megjegyzés: A super() használatához meg kell győződnünk arról, hogy ez legyen az első utasítás az osztály konstruktorában. Csak a szülő osztály konstruktorára hivatkozhatunk vele.

ez a kulcsszó és ez() konstruktor

ezt a kulcsszót

Ez egy fenntartott kulcsszó a Java-ban, amelyet az aktuális osztályobjektumra használnak. Ez egy referenciaváltozó, amelyen keresztül a metódus meghívódik. A kulcsszó egyéb felhasználási módjai:

  • Használhatjuk az aktuális osztálypéldányváltozó hivatkozására.
  • Használhatjuk az aktuális osztálymetódus meghívására (implicit módon).
  • A metódus- és konstruktorhívásokban argumentumként adhatjuk át.
  • Használhatjuk az aktuális osztálypéldány visszaadására is a metódusból.

ez() konstruktor

A konstruktor az egyik konstruktor meghívására szolgál ugyanabból az osztályból a másikból. Vegyünk egy példát mindkettőre ez kulcsszó és ez() hogy megértsék, hogyan működnek.

ThisExample1.java

kali linux terminál
 // 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'); } } 

Kimenet:

ez vs szuper Java-ban

Különbség e és a szuper kulcsszó között

Az alábbi táblázat leírja a fő különbséget ez és a szuper között:

ez szuper
Az osztály aktuális példányát ez a kulcsszó képviseli. A szülőosztály aktuális példányát a szuper kulcsszó jelöli.
Az aktuális osztály alapértelmezett konstruktorának meghívásához használhatjuk ezt a kulcsszót. A szülőosztály alapértelmezett konstruktorának meghívásához használhatjuk a szuper kulcsszót.
Statikus kontextusból hivatkozhatunk rá. Ez azt jelenti, hogy a statikus kontextusból meg lehet hívni. Statikus kontextusból nem lehet hivatkozni rá. Ez azt jelenti, hogy nem hívható meg statikus kontextusból.
Ezzel csak az aktuális osztályadattagokat és tagfüggvényeket érhetjük el. Segítségével elérhetjük a szülőosztály adattagjait és tagfüggvényeit.

Különbség a this() és a super() konstruktor között

ez() szuper()
A this() konstruktor az aktuális osztályobjektumra hivatkozik. A super() konstruktor közvetlen szülő osztály objektumra hivatkozik.
Az aktuális osztály metódusának meghívására szolgál. Szülőosztály metódusainak meghívására szolgál.
A paraméterezett konstruktorban bárhol használható. Mindig ez az első sor a gyermekosztály-konstruktorban.
Egy felülírt metódus szuperosztályú változatának meghívására szolgál. Egy felülírt metódus szuperosztályú változatának meghívására szolgál.