Ereditarietà

Facciamo una cosa alla volta

Consiste nel fare ereditare oggetti, attributi, metodi di una classe a un'altra determinata classe.

Vantaggi:

  1. Riutilizzo del codice
  2. Sviluppo incrementale di programmi

Termini da tenere a mente:

  • superclasse (la classe più generale)
  • sottoclasse (la classe più specializzata)

Un esempio pratico per capire meglio la distinzione tra superclasse e sottoclasse è il seguente: immaginiamo di avere la classe Persona, la classe Studente e la classe Professore. Visto che studenti e professori sono persone, allora si dice che Studente e Professore sono sottoclassi di Persona; analogamente Persona è la superclasse poiché nel nostro esempio non ci sono classi più generali che la comprendono.

In termini tecnici:

  • la sottoclasse eredita dalla superclasse i membri preesistenti
  • la sottoclasse estende la superclasse con i nuovi membri

Per estendere una classe ci serviamo della parola chiave "extends" messa in questo modo:

  • public class nome_sottoclasse extends nome_superclasse {...}

Un'altra parola chiave da memorizzare è "super": viene tipicamente usata per accedere ai metodi della superclasse che sono stati sovrascritti nella sottoclasse e per accedere agli attributi della superclasse.  La sintassi è semplice:

  • super.nome_metodo( );
  • super(nome_attributi);


Classe Persona (superclasse)

public class Persona {
   public String nome;
   public String indirizzo;
   public Persona(String nome, String indirizzo){
      this.nome = nome;
      this.indirizzo = indirizzo;
   }
   public String getNome(){
      return nome;
   }
   public String getIndirizzo(){
      return indirizzo;
   }
   public void Visualizza(){
      System.out.println("NOME: " + nome);
      System.out.println("INDIRIZZO: " + indirizzo);
    }
}

Classe Professore (sottoclasse)

public class Professore extends Persona {                  

   public String ruolo;
   public int stipendio;
   public String corsiAffidati;

   public Professore(String nome, String indirizzo, String ruolo){
      super(nome,indirizzo);
      this.ruolo = ruolo;
      this.corsiAffidati = "";
    }

    public void setStipendio(int stipendio){
       this.stipendio = stipendio;
     }

     public void aumentaStipendio(int aumento){
         this.stipendio += aumento;
      }

      public void aggiungiCorso(String corso){
          corsiAffidati += corso + "\n";
       }

       public void Visualizza(){
           super.Visualizza();
           System.out.println("RUOLO: " + ruolo);
           System.out.println("STIPENDIO: " + stipendio);
           System.out.println("CORSI AFFIDATI: " + corsiAffidati);
         }

}

javaperstudenti.webnode.it
Creato con Webnode
Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia