logo

Rozdíl mezi tímto a super v Javě

The 'tento' a ' super' klíčová slova jsou vyhrazená slova, která se používají v jiném kontextu. Kromě toho nabízí Java tento() a super() konstruktory, které se používají v kontextu konstruktoru. V této části budeme diskutovat o rozdíly mezi tímto a super klíčovým slovem a tento() a super() konstruktor, v Javě.

super klíčové slovo a super() konstruktor

super klíčové slovo

Vyhrazené klíčové slovo používané k volání metody nebo proměnné základní třídy je známé jako a super klíčové slovo. Nemůžeme použít super klíčové slovo jako identifikátor . Klíčové slovo super se nepoužívá pouze k odkazování na instanci základní třídy, ale také na statické členy.

super() konstruktor

The super() se používá hlavně pro vyvolání členských funkcí a konstruktorů základní třídy.

Vezměme si příklad obojího super klíčové slovo a super() abyste pochopili, jak fungují.

SuperPříklad1.java

restartujte mysql ubuntu
 // 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'); } } 

Výstup:

toto vs super v Javě

V metodě main() jsme udělali prohlášení nový superpříklad1() . Volá konstruktor Superpříklad1 třída.

Uvnitř konstruktoru jsme učinili prohlášení super() který volá konstruktor své rodičovské třídy, tj. Kočka. V konstruktoru jsme udělali tři prohlášení:

  1. Inicializujte barvu s hodnotou 'Hnědý'.
  2. Tisk datového člena nadřazené třídy.
  3. Vytisknout aktuální datový člen třídy.

Když se provede druhý příkaz, tok programu přeskočí do třídy Animal, aby získal přístup k hodnotě svých datových členů. Po přístupu k němu se tok vrátí zpět do Kočka konstruktor třídy a vytiskne jej. Poté poslední příkaz provede a vypíše hodnotu proměnných aktuální třídy.

Po provedení posledního výpisu z Kočka třídy, tok se vrátí zpět ke konstruktoru třídy Superpříklad1 a provede zbývající příkazy.

Po dokončení provedení superpříklad1() , tok se vrátí do metody main() a provede zbývající příkazy.

Poznámka: Abychom mohli použít super(), musíme se ujistit, že by to měl být první příkaz v konstruktoru třídy. Můžeme jej použít k odkazování pouze na konstruktor rodičovské třídy.

toto klíčové slovo a konstruktor this().

toto klíčové slovo

Je to vyhrazené klíčové slovo v Javě, které se používá k odkazování na aktuální objekt třídy. Je to referenční proměnná, jejímž prostřednictvím je metoda volána. Další použití tohoto klíčového slova jsou:

  • Můžeme jej použít k odkazování na aktuální proměnnou instance třídy.
  • Můžeme jej použít k vyvolání metody aktuální třídy (implicitně).
  • Můžeme to předat jako argument ve volání metody a konstruktoru.
  • Můžeme jej také použít pro vrácení aktuální instance třídy z metody.

tento() konstruktor

Konstruktor se používá k volání jednoho konstruktoru z druhého konstruktoru stejné třídy. Vezměme si příklad obojího tento klíčové slovo a tento() abyste pochopili, jak fungují.

ThisExample1.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'); } } 

Výstup:

toto vs super v Javě

Rozdíl mezi tímto a super klíčovým slovem

Následující tabulka popisuje hlavní rozdíl mezi tímto a super:

tento super
Aktuální instance třídy je reprezentována tímto klíčovým slovem. Aktuální instance nadřazené třídy je reprezentována klíčovým slovem super.
Abychom mohli zavolat výchozí konstruktor aktuální třídy, můžeme použít toto klíčové slovo. Abychom mohli zavolat výchozí konstruktor nadřazené třídy, můžeme použít klíčové slovo super.
Lze na něj odkazovat ze statického kontextu. To znamená, že jej lze vyvolat ze statického kontextu. Nelze na něj odkazovat ze statického kontextu. To znamená, že jej nelze vyvolat ze statického kontextu.
Můžeme jej použít pro přístup pouze k aktuálním datovým členům třídy a členským funkcím. Můžeme jej použít pro přístup k datovým členům a členským funkcím nadřazené třídy.

Rozdíl mezi konstruktorem this() a super().

tento() super()
Konstruktor this() odkazuje na aktuální objekt třídy. Konstruktor super() odkazuje na bezprostřední nadřazený objekt třídy.
Používá se pro vyvolání metody aktuální třídy. Používá se pro vyvolání metod rodičovské třídy.
Lze jej použít kdekoli v parametrizovaném konstruktoru. Je to vždy první řádek v konstruktoru podřízené třídy.
Používá se pro vyvolání verze nadtřídy přepsané metody. Používá se pro vyvolání verze nadtřídy přepsané metody.