The 'toto' a ' Super' kľúčové slová sú vyhradené slová, ktoré sa používajú v inom kontexte. Okrem toho poskytuje Java toto () a Super() konštruktory, ktoré sa používajú v kontexte konštruktora. V tejto časti budeme diskutovať o rozdiely medzi týmto a super kľúčovým slovom a tento() a super() konštruktor, v Jave.
super kľúčové slovo a super() konštruktor
super kľúčové slovo
Vyhradené kľúčové slovo používané na volanie metódy základnej triedy alebo premennej je známe ako a Super kľúčové slovo. Nemôžeme použiť Super kľúčové slovo ako an identifikátor . Kľúčové slovo super sa používa nielen na označenie inštancie základnej triedy, ale aj na statické členy.
skrátiť a odstrániť rozdiel
super() konštruktor
The Super() sa používa hlavne na vyvolanie členských funkcií základnej triedy a konštruktorov.
Zoberme si príklad oboch Super kľúčové slovo a Super() pochopiť, ako fungujú.
SuperPríklad1.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'); } }
Výkon:
V metóde main() sme urobili vyhlásenie nový superpríklad1() . Volá konštruktor Superpríklad1 trieda.
Vo vnútri konštruktora sme urobili vyhlásenie Super() ktorý volá konštruktor svojej nadradenej triedy, t.j. Cat. V konštruktore sme urobili tri vyhlásenia:
- Inicializujte farbu s hodnotou 'Hnedý'.
- Vytlačte údajový člen nadradenej triedy.
- Vytlačiť aktuálny člen triedy údajov.
Keď sa vykoná druhý príkaz, tok programu preskočí do triedy Animal, aby získal prístup k hodnote svojich údajových členov. Po prístupe k nemu sa tok vráti späť do Cat konštruktor triedy a vytlačí ho. Potom posledný príkaz vykoná a vypíše hodnotu premenných aktuálnej triedy.
Po vykonaní posledného výpisu z Cat triedy, tok sa vráti ku konštruktorovi triedy Superpríklad1 a vykoná zostávajúce príkazy.
reťazec java concat
Po dokončení vykonania superpríklad1() , tok sa vráti do metódy main() a vykoná zostávajúce príkazy.
Poznámka: Aby sme mohli použiť super(), musíme sa uistiť, že by to mal byť prvý príkaz v konštruktore triedy. Môžeme ho použiť na odkazovanie iba na konštruktor rodičovskej triedy.
toto kľúčové slovo a konštruktor this().
toto kľúčové slovo
Je to vyhradené kľúčové slovo v jazyku Java, ktoré sa používa na označenie aktuálneho objektu triedy. Je to referenčná premenná, cez ktorú sa metóda volá. Ďalšie použitia tohto kľúčového slova sú:
- Môžeme ho použiť na odkazovanie aktuálnej premennej inštancie triedy.
- Môžeme ho použiť na vyvolanie aktuálnej metódy triedy (implicitne).
- Môžeme ho odovzdať ako argument vo volaniach metódy a konštruktora.
- Môžeme ho použiť aj na vrátenie aktuálnej inštancie triedy z metódy.
tento() Konštruktor
Konštruktor sa používa na volanie jedného konštruktora z druhého konštruktora rovnakej triedy. Uveďme si príklad oboch toto kľúčové slovo a toto () pochopiť, ako 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ýkon:
Rozdiel medzi týmto a super kľúčovým slovom
Nasledujúca tabuľka popisuje hlavný rozdiel medzi týmto a super:
toto | Super |
---|---|
Toto kľúčové slovo predstavuje aktuálnu inštanciu triedy. | Aktuálna inštancia nadradenej triedy je reprezentovaná kľúčovým slovom super. |
Aby sme zavolali predvolený konštruktor aktuálnej triedy, môžeme použiť toto kľúčové slovo. | Aby sme zavolali predvolený konštruktor nadradenej triedy, môžeme použiť kľúčové slovo super. |
Dá sa naň odkazovať zo statického kontextu. Znamená to, že ho možno vyvolať zo statického kontextu. | Nemožno naň odkazovať zo statického kontextu. Znamená to, že ho nemožno vyvolať zo statického kontextu. |
Môžeme ho použiť na prístup iba k aktuálnym členom triedy údajov a členským funkciám. | Môžeme ho použiť na prístup k dátovým členom a členským funkciám nadradenej triedy. |
Rozdiel medzi týmto() a super() konštruktorom
toto () | Super() |
---|---|
Konštruktor this() odkazuje na aktuálny objekt triedy. | Konštruktor super() odkazuje na objekt bezprostrednej nadradenej triedy. |
Používa sa na vyvolanie aktuálnej metódy triedy. | Používa sa na vyvolanie metód nadradenej triedy. |
Dá sa použiť kdekoľvek v parametrizovanom konštruktore. | Je to vždy prvý riadok v konštruktore podradenej triedy. |
Používa sa na vyvolanie verzie supertriedy prepísanej metódy. | Používa sa na vyvolanie verzie supertriedy prepísanej metódy. |