logo

Super cuvânt cheie în Java

The super cuvânt cheie în Java este o variabilă de referință care este folosită pentru a se referi la clasa părinte atunci când lucrăm cu obiecte. Trebuie să cunoașteți elementele de bază ale Moştenire și Polimorfism pentru a înțelege cuvântul cheie super Java.

Cuvântul cheie super a intrat în imagine cu conceptul de Moștenire. În acest articol, vom acoperi totul despre super în Java, inclusiv definiții, exemple, utilizări, sintaxă și multe altele.

Cuprins



Caracteristicile Super Keyword în Java

În Java, cuvântul cheie super este folosit pentru a se referi la clasa părinte a unei subclase. Iată câteva dintre caracteristicile sale cheie:

  • super este folosit pentru a apela un constructor de superclasă: Când o subclasă este creată, constructorul acesteia trebuie să apeleze constructorul clasei părinte. Acest lucru se face folosind cuvântul cheie super(), care apelează constructorul clasei părinte.
  • super este folosit pentru a apela o metodă superclasă: O subclasă poate apela o metodă definită în clasa sa părinte folosind cuvântul cheie super. Acest lucru este util atunci când subclasa dorește să invoce implementarea metodei de către clasa părinte pe lângă propria sa.
  • super este folosit pentru a accesa un câmp de superclasă: O subclasă poate accesa un câmp definit în clasa sa părinte folosind cuvântul cheie super. Acest lucru este util atunci când subclasa dorește să facă referire la versiunea unui câmp a clasei părinte.
  • super trebuie să fie prima declarație dintr-un constructor: La apelarea unui constructor de superclase, instrucțiunea super() trebuie să fie prima instrucțiune din constructorul subclasei.
  • super nu poate fi folosit într-un context static: Cuvântul cheie super nu poate fi utilizat într-un context static, cum ar fi într-o metodă statică sau într-un inițializator de variabilă static.
  • super nu este necesar pentru a apela o metodă superclasă: Deși este posibil să utilizați cuvântul cheie super pentru a apela o metodă din clasa părinte, acesta nu este necesar. Dacă o metodă nu este suprascrisă în subclasă, atunci apelarea acesteia fără cuvântul cheie super va invoca implementarea clasei părinte.

În general, super cuvânt cheie este un instrument puternic pentru subclasare în Java, permițând subclaselor să moștenească și să se bazeze pe funcționalitatea claselor lor părinte.

Utilizarea cuvântului cheie super în Java

Este utilizat în principal în următoarele contexte, după cum este menționat mai jos:

  • Utilizarea super cu variabile
  • Utilizarea super cu Metode
  • Utilizarea super cu constructori

1. Utilizarea super cu variabile

Acest scenariu apare atunci când o clasă derivată și o clasă de bază au aceiași membri de date. În acest caz, există o posibilitate de ambiguitate JVM .

O putem înțelege mai clar folosind următorul exemplu:

Exemplu

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();> >}> }>

>

>

Ieșire

Maximum Speed: 120>

În exemplul de mai sus, atât clasa de bază, cât și subclasa au un membru maxSpeed. Am putea accesa maxSpeed ​​a clasei de bază din subclasă folosind super-cheie.

2. Utilizarea super cu Metode

Acesta este folosit atunci când dorim să apelăm clasa părinte metodă . Deci, ori de câte ori o clasă părinte și copil au aceleași metode cu același nume, pentru a rezolva ambiguitatea, folosim cuvântul cheie super.

Acest fragment de cod ajută la înțelegerea modului de utilizare a cuvântului cheie super.

Exemplu

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();> >}> }>

>

>

Ieșire

This is student class This is person class>

În exemplul de mai sus, am văzut că dacă numim doar metoda mesaj() apoi, clasa curentă message() este invocată, dar cu utilizarea cuvântului cheie super, mesaj() a superclasei ar putea fi de asemenea invocate.

3. Utilizarea super cu constructori

Cuvântul cheie super poate fi folosit și pentru a accesa constructorul clasei părinte. Un lucru mai important este că „super” poate apela atât constructori parametrici, cât și neparametrici, în funcție de situație.

Mai jos este fragmentul de cod pentru a explica conceptul de mai sus:

Exemplul 1

Java


kat timpf greutate



// 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();> >}> }>

>

>

Ieșire

Person class Constructor Student class Constructor>

În exemplul de mai sus, am apelat constructorul de superclasă folosind cuvântul cheie „super” prin constructorul de subclasă.

Exemplul 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);> >}> }>

>

>

Ieșire

false>

Avantajele utilizării Java Super Keyword

The super cuvânt cheie în Java oferă multe avantaje în programarea orientată pe obiecte sunt următoarele:

  • Permite reutilizarea codului : Folosirea cuvântului cheie super permite subclaselor să moștenească funcționalitatea din clasele lor părinte, ceea ce promovează reutilizarea codului și reduce duplicarea.
  • Suporta polimorfismul : Deoarece subclasele pot suprascrie metode și accesa câmpuri din clasele lor părinte folosind super, polimorfismul este posibil. Acest lucru permite un cod mai flexibil și mai extensibil.
  • Oferă acces la comportamentul clasei părinților : Subclasele pot accesa și utiliza metode și câmpuri definite în clasele lor părinte prin intermediul cuvântului cheie super, care le permite să profite de comportamentul existent fără a fi nevoie să-l reimplementeze.
  • Permite personalizarea comportamentului: Prin suprascrierea metodelor și folosind super pentru a apela implementarea părinte, subclasele pot personaliza și extinde comportamentul claselor lor părinte.
  • Facilitează abstracția și încapsularea: Utilizarea super promovează încapsularea și abstracția, permițând subclaselor să se concentreze asupra comportamentului lor, bazându-se pe clasa părinte pentru a gestiona detaliile de nivel inferior.

În general, cuvântul cheie super este o caracteristică cheie a moştenire și polimorfism în Java și oferă mai multe beneficii pentru dezvoltatorii care doresc să scrie cod reutilizabil, extensibil și bine organizat.

Puncte importante de reținut când utilizați Java Super Keyword

Iată câteva puncte importante de care trebuie să aveți grijă atunci când utilizați super cuvinte cheie în Java:

  • Apelul la super() trebuie să fie prima instrucțiune din clasa Derived(Student). constructor pentru că, dacă te gândești la asta, are sens ca superclasa să nu cunoască nicio subclasă, așa că orice inițializare pe care trebuie să o efectueze este separată și eventual o condiție prealabilă pentru orice inițializare efectuată de subclasă. Prin urmare, trebuie să-și finalizeze mai întâi execuția.
  • Dacă un constructor nu invocă în mod explicit un constructor de superclasă, compilatorul Java inserează automat un apel la constructorul fără argument al superclasei. Dacă superclasa nu are un constructor fără argument, veți obține o eroare de compilare. Obiectul face au un astfel de constructor, deci dacă Obiectul este singura superclasă, nu există nicio problemă.

super cuvânt cheie în Java

  • Dacă un constructor de subclasă invocă un constructor al superclasei sale, fie explicit, fie implicit, ați putea crede că este apelat un întreg lanț de constructori, până la constructorul Object. Acesta, de fapt, este cazul. Se numeste înlănţuirea constructorului .

Întrebări frecvente – Java super Keyword

Î1. Ce este super () și super cuvânt cheie în Java?

Super() este un cuvânt cheie Java folosit pentru a apela un constructor de superclasă. Super accesează membrii superclasei și menține ierarhiile de moștenire.

Q2. Care este super-clasa Java?

The Clasa de obiecte aka super clasă se află în fruntea ierarhiei claselor în Pachetul java.lang al Java . Fiecare clasă, indiferent dacă este predefinită sau definită de utilizator, este o subclasă a clasei Object.

Q3. De ce este Super important în Java?

super este esențial în Java, deoarece facilitează accesul, inițializarea și gestionarea relațiilor dintre superclase și subclase, promovând astfel reutilizarea codului.