logo

Rozdiel medzi týmto a super v Jave

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:

toto vs super v Jave

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:

  1. Inicializujte farbu s hodnotou 'Hnedý'.
  2. Vytlačte údajový člen nadradenej triedy.
  3. 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:

toto vs super v Jave

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.