logo

Super parola chiave in Java

IL super parola chiave in Java è una variabile di riferimento che viene utilizzata per fare riferimento alla classe genitore quando lavoriamo con oggetti. È necessario conoscere le basi di Eredità E Polimorfismo per comprendere la super parola chiave Java.

La parola chiave super è entrato in scena con il concetto di ereditarietà. In questo articolo tratteremo tutto di Super in Java, comprese definizioni, esempi, usi, sintassi e altro.

Tabella dei contenuti



Caratteristiche della super parola chiave in Java

In Java, la parola chiave super viene utilizzata per fare riferimento alla classe genitore di una sottoclasse. Ecco alcune delle sue caratteristiche principali:

  • super è usato per chiamare un costruttore di superclasse: Quando viene creata una sottoclasse, il suo costruttore deve chiamare il costruttore della sua classe genitore. Questo viene fatto utilizzando la parola chiave super(), che chiama il costruttore della classe genitore.
  • super è usato per chiamare un metodo della superclasse: Una sottoclasse può chiamare un metodo definito nella sua classe genitore utilizzando la parola chiave super. Ciò è utile quando la sottoclasse vuole invocare l'implementazione del metodo della classe genitore oltre alla propria.
  • super viene utilizzato per accedere a un campo della superclasse: Una sottoclasse può accedere a un campo definito nella sua classe genitore utilizzando la parola chiave super. Ciò è utile quando la sottoclasse vuole fare riferimento alla versione di un campo della classe genitore.
  • super deve essere la prima istruzione in un costruttore: Quando si chiama un costruttore di superclasse, l'istruzione super() deve essere la prima istruzione nel costruttore della sottoclasse.
  • super non può essere utilizzato in un contesto statico: La parola chiave super non può essere utilizzata in un contesto statico, ad esempio in un metodo statico o in un inizializzatore di variabile statica.
  • super non è necessario per chiamare un metodo della superclasse: Sebbene sia possibile utilizzare la parola chiave super per chiamare un metodo nella classe genitore, non è obbligatorio. Se un metodo non viene sovrascritto nella sottoclasse, chiamarlo senza la parola chiave super richiamerà l'implementazione della classe genitore.

Nel complesso, il parola chiave eccellente è un potente strumento per creare sottoclassi in Java, consentendo alle sottoclassi di ereditare e sviluppare la funzionalità delle classi madri.

Uso della parola chiave super in Java

Viene utilizzato principalmente nei seguenti contesti, come indicato di seguito:

  • Uso di super con variabili
  • Utilizzo di super con metodi
  • Uso di super con i costruttori

1. Utilizzo di super con variabili

Questo scenario si verifica quando una classe derivata e una classe base hanno gli stessi membri dati. In tal caso, esiste la possibilità di ambiguità JVM .

Possiamo capirlo più chiaramente utilizzando il seguente esempio:

Esempio

Giava




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

>

>

Produzione

Maximum Speed: 120>

Nell'esempio precedente, sia la classe base che la sottoclasse hanno un membro maxSpeed. Potremmo accedere alla maxSpeed ​​della classe base nella sottoclasse utilizzando la parola chiave super.

2. Utilizzo di super con metodi

Viene utilizzato quando vogliamo chiamare la classe genitore metodo . Pertanto, ogni volta che una classe genitore e una classe figlia hanno metodi con lo stesso nome, per risolvere l'ambiguità utilizziamo la parola chiave super.

Questo frammento di codice aiuta a comprendere il suddetto utilizzo della super parola chiave.

Esempio

Giava




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

>

>

Produzione

This is student class This is person class>

Nell'esempio precedente, abbiamo visto che se chiamiamo solo metodo Messaggio() quindi, viene invocata la classe corrente message() ma con l'uso della parola chiave super, Messaggio() della superclasse potrebbe anche essere invocata.

3. Uso di super con i costruttori

La parola chiave super può essere utilizzata anche per accedere al costruttore della classe genitore. Un'altra cosa importante è che 'super' può chiamare sia costruttori parametrici che non parametrici a seconda della situazione.

Di seguito è riportato lo snippet di codice per spiegare il concetto di cui sopra:

Esempio 1

Giava


è una relazione



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

>

>

Produzione

Person class Constructor Student class Constructor>

Nell'esempio precedente, abbiamo chiamato il costruttore della superclasse utilizzando la parola chiave 'super' tramite il costruttore della sottoclasse.

Esempio 2

Giava




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

>

>

Produzione

false>

Vantaggi dell'utilizzo di Java Super Keyword

IL super parola chiave in Java fornisce molti vantaggi nella programmazione orientata agli oggetti sono i seguenti:

  • Consente il riutilizzo del codice : L'uso della parola chiave super consente alle sottoclassi di ereditare funzionalità dalle classi madri, il che promuove il riutilizzo del codice e riduce la duplicazione.
  • Supporta il polimorfismo : Poiché le sottoclassi possono sovrascrivere metodi e accedere ai campi dalle loro classi madri utilizzando super, il polimorfismo è possibile. Ciò consente un codice più flessibile ed estensibile.
  • Fornisce l'accesso al comportamento della classe genitore : Le sottoclassi possono accedere e utilizzare metodi e campi definiti nelle classi madri tramite la parola chiave super, che consente loro di trarre vantaggio dal comportamento esistente senza doverlo reimplementare.
  • Consente la personalizzazione del comportamento: Sovrascrivendo i metodi e utilizzando super per chiamare l'implementazione genitore, le sottoclassi possono personalizzare ed estendere il comportamento delle loro classi genitore.
  • Facilita l'astrazione e l'incapsulamento: L'uso di super promuove l'incapsulamento e l'astrazione consentendo alle sottoclassi di concentrarsi sul proprio comportamento facendo affidamento sulla classe genitore per gestire i dettagli di livello inferiore.

Nel complesso, la parola chiave super è una caratteristica fondamentale di eredità E polimorfismo in Java e offre numerosi vantaggi agli sviluppatori che desiderano scrivere codice riutilizzabile, estensibile e ben organizzato.

Punti importanti da ricordare durante l'utilizzo della Super Keyword Java

Ecco alcuni punti importanti di cui devi occuparti durante l'utilizzo delle super parole chiave in Java:

  • La chiamata a super() deve essere la prima istruzione nella classe Derived(Student). costruttore perché se ci pensi, è logico che la superclasse non conosca alcuna sottoclasse, quindi qualsiasi inizializzazione che deve eseguire è separata e possibilmente prerequisita per qualsiasi inizializzazione eseguita dalla sottoclasse. Pertanto, è necessario prima completarne l'esecuzione.
  • Se un costruttore non invoca esplicitamente un costruttore della superclasse, il compilatore Java inserisce automaticamente una chiamata al costruttore senza argomenti della superclasse. Se la superclasse non ha un costruttore senza argomenti, riceverai un errore in fase di compilazione. L'oggetto fa avere un costruttore di questo tipo, quindi se Object è l'unica superclasse, non ci sono problemi.

super parola chiave in Java

  • Se un costruttore di una sottoclasse invoca un costruttore della sua superclasse, esplicitamente o implicitamente, si potrebbe pensare che venga chiamata un'intera catena di costruttori, fino al costruttore di Object. Questo, infatti, è il caso. È chiamato concatenamento del costruttore .

Domande frequenti: super parola chiave Java

Q1. Cos'è super () e la parola chiave super in Java?

Super() è una parola chiave Java utilizzata per chiamare un costruttore di superclasse. Super accede ai membri della superclasse e mantiene le gerarchie di ereditarietà.

Q2. Qual è la superclasse di Java?

IL Classe di oggetti, ovvero superclasse è al vertice della gerarchia delle classi in Pacchetto java.lang di Java . Ogni classe, predefinita o definita dall'utente, è una sottoclasse della classe Object.

Q3. Perché Super è importante in Java?

super è essenziale in Java poiché facilita l'accesso, l'inizializzazione e la gestione delle relazioni tra superclassi e sottoclassi, promuovendo così la riusabilità del codice.