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:
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í:
- Inicializujte barvu s hodnotou 'Hnědý'.
- Tisk datového člena nadřazené třídy.
- 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:
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. |