The super kľúčové slovo v jazyku Java je referenčná premenná, ktorá sa používa na odkazovanie na nadradenú triedu, keď pracujeme s objektmi. Musíte poznať základy Dedičnosť a Polymorfizmus aby ste pochopili kľúčové slovo Java super.
Kľúčové slovo Super prišiel do obrazu s pojmom dedičstvo. V tomto článku sa budeme zaoberať všetkým o super v jazyku Java vrátane definícií, príkladov, použití, syntaxe a ďalších.
Obsah
- Charakteristika super kľúčového slova v Jave
- Použitie super kľúčového slova v Jave
- 1. Použitie super s premennými
- 2. Použitie super s metódami
- 3. Použitie super s konštruktérmi
- Výhody používania Java Super Keyword
Charakteristika super kľúčového slova v Jave
V jazyku Java sa kľúčové slovo super používa na označenie rodičovskej triedy podtriedy. Tu sú niektoré z jeho kľúčových charakteristík:
- super sa používa na volanie konštruktora nadtriedy: Keď je vytvorená podtrieda, jej konštruktor musí zavolať konštruktor svojej nadradenej triedy. Robí sa to pomocou kľúčového slova super(), ktoré volá konštruktor nadradenej triedy.
- super sa používa na volanie metódy nadtriedy: Podtrieda môže volať metódu definovanú v jej rodičovskej triede pomocou kľúčového slova super. To je užitočné, keď chce podtrieda vyvolať implementáciu metódy nadradenej triedy okrem svojej vlastnej.
- super sa používa na prístup k poľu superclass: Podtrieda môže pristupovať k poľu definovanému v jej rodičovskej triede pomocou kľúčového slova super. Je to užitočné, keď chce podtrieda odkazovať na verziu poľa nadradenej triedy.
- super musí byť prvý príkaz v konštruktore: Pri volaní konštruktora nadtriedy musí byť príkaz super() prvým príkazom v konštruktore podtriedy.
- super nemožno použiť v statickom kontexte: Kľúčové slovo super nemožno použiť v statickom kontexte, ako napríklad v statickej metóde alebo inicializátore statickej premennej.
- super sa nevyžaduje na volanie metódy nadtriedy: Aj keď je možné použiť kľúčové slovo super na volanie metódy v rodičovskej triede, nie je to potrebné. Ak metóda nie je v podtriede prepísaná, jej volanie bez kľúčového slova super vyvolá implementáciu nadradenej triedy.
Celkovo možno povedať, super kľúčové slovo je výkonný nástroj na triedenie podtried v jazyku Java, ktorý umožňuje podtriedam dediť a stavať na funkciách svojich rodičovských tried.
Použitie super kľúčového slova v Jave
Používa sa hlavne v nasledujúcich kontextoch, ako je uvedené nižšie:
- Použitie super s premennými
- Použitie super s metódami
- Použitie super s konštruktérmi
1. Použitie super s premennými
Tento scenár nastane, keď odvodená trieda a základná trieda majú rovnaké dátové členy. V takom prípade existuje možnosť nejednoznačnosti JVM .
Jasnejšie to pochopíme na nasledujúcom príklade:
Príklad
Java
// super keyword in java example> > // Base class vehicle> class> Vehicle {> >int> maxSpeed =>120>;> }> > // sub class Car extending vehicle> class> Car>extends> Vehicle {> >int> maxSpeed =>180>;> > >void> display()> >{> >// print maxSpeed of base class (vehicle)> >System.out.println(>'Maximum Speed: '> >+>super>.maxSpeed);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Car small =>new> Car();> >small.display();> >}> }> |
>
>Výkon
Maximum Speed: 120>
Vo vyššie uvedenom príklade majú základná trieda aj podtrieda člena maxSpeed. Pomocou kľúčového slova super sme mohli získať prístup k maxSpeed základnej triedy v podtriede.
2. Použitie super s metódami
Používa sa, keď chceme zavolať rodičovskú triedu metóda . Takže vždy, keď má trieda rodičov a potomkov rovnaké metódy, na vyriešenie nejednoznačnosti použijeme kľúčové slovo super.
Tento útržok kódu pomáha pochopiť uvedené použitie super kľúčového slova.
Príklad
Java
// super keyword in java example> > // superclass Person> class> Person {> >void> message()> >{> >System.out.println(>'This is person class
'>);> >}> }> // Subclass Student> class> Student>extends> Person {> >void> message()> >{> >System.out.println(>'This is student class'>);> >}> >// Note that display() is> >// only in Student class> >void> display()> >{> >// will invoke or call current> >// class message() method> >message();> > >// will invoke or call parent> >// class message() method> >super>.message();> >}> }> // Driver Program> class> Test {> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> > >// calling display() of Student> >s.display();> >}> }> |
>
>Výkon
This is student class This is person class>
Vo vyššie uvedenom príklade sme videli, že ak zavoláme iba metódu správa() potom sa vyvolá aktuálna správa triedy (), ale s použitím kľúčového slova super, správa() nadtriedy by sa mohli tiež odvolať.
3. Použitie super s konštruktérmi
Kľúčové slovo super možno použiť aj na prístup ku konštruktoru nadradenej triedy. Ďalšou dôležitou vecou je, že „super“ môže volať parametrické aj neparametrické konštruktory v závislosti od situácie.
Nasleduje útržok kódu na vysvetlenie vyššie uvedeného konceptu:
Príklad 1
Java
typ dátumu strojopisu
// Java Code to show use of> // super keyword with constructor> > // superclass Person> class> Person {> >Person()> >{> >System.out.println(>'Person class Constructor'>);> >}> }> > // subclass Student extending the Person class> class> Student>extends> Person {> >Student()> >{> >// invoke or call parent class constructor> >super>();> > >System.out.println(>'Student class Constructor'>);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Student s =>new> Student();> >}> }> |
>
>Výkon
Person class Constructor Student class Constructor>
Vo vyššie uvedenom príklade sme zavolali konštruktor nadtriedy pomocou kľúčového slova „super“ prostredníctvom konštruktora podtriedy.
Príklad 2
Java
class> ParentClass {> >public> boolean> isTrue() {>return> true>; }> }> > class> ChildClass>extends> ParentClass {> >public> boolean> isTrue()> >{> >// calls parent implementation of isTrue()> >boolean> parentResult =>super>.isTrue();> >// negates the parent result> >return> !parentResult;> >}> }> > public> class> Main {> >public> static> void> main(String[] args)> >{> >ChildClass child =>new> ChildClass();> >// calls child implementation> >// of isTrue()> >boolean> result = child.isTrue();> > >// prints 'false'> >System.out.println(result);> >}> }> |
>
>Výkon
false>
Výhody používania Java Super Keyword
The super kľúčové slovo v jazyku Java poskytuje mnoho výhod v objektovo orientovanom programovaní, sú nasledovné:
- Umožňuje opätovné použitie kódu : Použitie kľúčového slova super umožňuje podtriedam zdediť funkčnosť od svojich rodičovských tried, čo podporuje opätovné použitie kódu a znižuje duplicitu.
- Podporuje polymorfizmus : Pretože podtriedy môžu prepísať metódy a pristupovať k poliam zo svojich rodičovských tried pomocou super, je možný polymorfizmus. To umožňuje flexibilnejší a rozšíriteľnejší kód.
- Poskytuje prístup k správaniu rodičovskej triedy : Podtriedy môžu pristupovať a používať metódy a polia definované vo svojich nadradených triedach prostredníctvom kľúčového slova super, čo im umožňuje využiť existujúce správanie bez toho, aby ho museli znova implementovať.
- Umožňuje prispôsobenie správania: Prepísaním metód a použitím super na volanie rodičovskej implementácie môžu podtriedy prispôsobiť a rozšíriť správanie svojich rodičovských tried.
- Uľahčuje abstrakciu a zapuzdrenie: Použitie super podporuje zapuzdrenie a abstrakciu tým, že umožňuje podtriedam sústrediť sa na svoje správanie, pričom sa spolieha na to, že nadradená trieda zvládne detaily nižšej úrovne.
Celkovo je kľúčové slovo super kľúčovou vlastnosťou dedičstvo a polymorfizmus v jazyku Java a poskytuje niekoľko výhod pre vývojárov, ktorí sa snažia písať opakovane použiteľný, rozšíriteľný a dobre organizovaný kód.
Dôležité body, ktoré si treba zapamätať pri používaní super kľúčového slova Java
Tu je niekoľko dôležitých bodov, na ktoré sa musíte postarať pri používaní super kľúčových slov v jazyku Java:
- Volanie super() musí byť prvým príkazom v triede Derived(Student). konštruktér pretože ak sa nad tým zamyslíte, dáva zmysel, že nadtrieda nemá žiadne znalosti o žiadnej podtriede, takže akákoľvek inicializácia, ktorú musí vykonať, je oddelená od akejkoľvek inicializácie vykonanej podtriedou a je pravdepodobne nevyhnutnou podmienkou. Preto musí najskôr dokončiť jeho realizáciu.
- Ak konštruktor explicitne nevyvolá konštruktor nadtriedy, kompilátor Java automaticky vloží volanie bezargumentového konštruktora nadtriedy. Ak nadtrieda nemá konštruktor bez argumentov, dostanete chybu pri kompilácii. Objekt robí mať taký konštruktor, takže ak je Object jedinou nadtriedou, nie je problém.

- Ak konštruktor podtriedy vyvolá konštruktor svojej nadtriedy, či už explicitne alebo implicitne, môžete si myslieť, že sa volá celý reťazec konštruktorov, až po konštruktor Object. V skutočnosti je to tak. To sa nazýva reťazenie konštruktéra .
Často kladené otázky – Java super Keyword
Q1. Čo je super () a super kľúčové slovo v jazyku Java?
Super() je kľúčové slovo Java používané na volanie konštruktora nadtriedy. Super pristupuje k členom nadtriedy a udržiava hierarchiu dedičnosti.
Q2. Ktorá je super trieda Java?
The Trieda objektov alias super trieda je na vrchole triednej hierarchie v balík Java.lang . Každá trieda, či už preddefinovaná alebo definovaná používateľom, je podtriedou triedy Object.
Q3. Prečo je Super dôležitý v Jave?
super je v Jave nevyhnutný, pretože uľahčuje prístup, inicializáciu a správu vzťahov medzi nadtriedami a podtriedami, čím podporuje opätovnú použiteľnosť kódu.