Lezione di Java 23 – L’operatore super

Indice Lezione PrecedenteLezione Successiva


La parola chiave super è utilizzata in Java per riferirsi agli elementi della superclasse. Come per l’operatore this, anche super, viene utilizzato sia per le variabili (super.variabile) che per invocare altri metodi (super()), ed anche in quest’ultimo caso deve trovarsi, se presente, come prima riga del metodo. E’ possibile riferirsi solo agli elementi contenuti nella superclasse, non è consentito pertanto utilizzare super.super.variabile. Se una superclasse eredita degli elementi visibili, questi diventano degli elementi a tutti gli effetti della classe, di conseguenza si potranno utilizzare direttamente con un solo super.

public class Veicolo {
  public int ruote;
}

public class Auto
  extends Veicolo {
  public boolean stereo=false;
}

public class Fiat
  extends Auto {
  // Qui è possibile utilizzare super.ruote
  // utilizzare stereo, equivale a scrivere implicitamente super.stereo
}


invece se volessimo invocare un costruttore:

public class Veicolo {
  public int ruote;

  public Auto() {
    System.out.println("Sono il costruttore Veicolo()");
  }

  public Auto(int NRuote) {
    super(); // Questo non chiama Auto, non è this(), chiama
      //la classe Object che vederemo nella prossima lezione
    System.out.println("Sono il costruttore Veicolo(int)");
  }
}

public class Auto
  extends Veicolo {

  public Auto() {
    super();
    System.out.println("Sono il costruttore Auto()");
  }

  public Auto(int ruote) {
    super(ruote);
    System.out.println("Sono il costruttore Auto(int)");
  }
}

se nel metodo main abbiamo:

Auto a = new Auto();

avremo che verrà stampato:

System.out.println("Sono il costruttore Veicolo()");
System.out.println("Sono il costruttore Auto()");

Quando viene seguito super(…) l’esecuzione di quel metodo si ferma finchè l’esecuzione del costruttore della superclasse termina. Vediamo un altro esempio, con:

Auto a = new Auto(2);

avremo:

System.out.println("Sono il costruttore Veicolo(int)");
System.out.println("Sono il costruttore Auto(int)");

Ti piace l’articolo?
Diventa fan su Facebook
Indice Lezione PrecedenteLezione Successiva
Pubblicato in Guide, Guide, Java, Programmazione Taggato con: , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*