Ereditarietà

Riassunto

L'ereditarietà è un concetto fondamentale nell'Orientamento agli Oggetti (OOP) che consente la creazione di nuove classi basate su classi esistenti, consentendo di ereditare attributi e metodi dalla classe genitore.

Definizione:

L'ereditarietà consente a una classe di ereditare attributi e metodi da una classe esistente chiamata classe genitore o superclasse. La classe che eredita è chiamata classe figlia o sottoclasse.

Vantaggi:

  • Riutilizzo del Codice: L'ereditarietà consente il riutilizzo del codice esistente, poiché le classi figlie possono ereditare attributi e metodi dalla classe genitore senza doverli riscrivere.
  • Estensibilità: Permette l'estensione delle funzionalità di una classe esistente, consentendo di aggiungere nuovi metodi e attributi alla classe figlia senza influenzare il comportamento delle altre classi.
  • Organizzazione del Codice: L'ereditarietà consente di organizzare il codice in una struttura gerarchica, facilitando la comprensione e la manutenzione del software.

Esempio:

Ecco un esempio di ereditarietà in Java:

class Veicolo {
      String marca;
      int anno;
  
      void mostraInfo() {
          System.out.println("Marca: " + marca);
          System.out.println("Anno: " + anno);
      }
  }
  
  class Auto extends Veicolo {
      int numeroPorte;
  
      void mostraInfoAuto() {
          mostraInfo();
          System.out.println("Numero porte: " + numeroPorte);
      }
  }
  
  class Moto extends Veicolo {
      String tipo;
  
      void mostraInfoMoto() {
          mostraInfo();
          System.out.println("Tipo: " + tipo);
      }
  }
  
  public class Main {
      public static void main(String[] args) {
          Auto auto = new Auto();
          auto.marca = "Toyota";
          auto.anno = 2020;
          auto.numeroPorte = 4;
          auto.mostraInfoAuto();
  
          Moto moto = new Moto();
          moto.marca = "Honda";
          moto.anno = 2018;
          moto.tipo = "Sportiva";
          moto.mostraInfoMoto();
      }
  }

In questo esempio, le classi Auto e Moto ereditano attributi e metodi dalla classe Veicolo. Le classi figlie possono quindi utilizzare i metodi della classe genitore e aggiungere metodi e attributi specifici.