Ereditarietà in Java | Aulab

GUIDE PER ASPIRANTI PROGRAMMATORI

Ereditarietà in Java

Ci sono 3 concetti principali che fungono da pilastri fondamentali della programmazione orientata agli oggetti (OOP) e forniscono un framework per creare strutture di codice complesse e flessibili: ereditarietà, polimorfismo e incapsulamento. Scopriamo insieme, anche nei capitoli a seguire, come funziona ognuno di loro.   Ereditarietà in Java L’ereditarietà è un meccanismo che permette ad una…

Lezione 25 / 47
Enza Neri
Immagine di copertina

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

Ci sono 3 concetti principali che fungono da pilastri fondamentali della programmazione orientata agli oggetti (OOP) e forniscono un framework per creare strutture di codice complesse e flessibili: ereditarietà, polimorfismo e incapsulamento. Scopriamo insieme, anche nei capitoli a seguire, come funziona ognuno di loro.

Ereditarietà in Java

L’ereditarietà è un meccanismo che permette ad una classe di ereditare attributi e metodi da un’altra classe. La classe che eredita è chiamata “sottoclasse” o “classe derivata“, mentre la classe da cui eredita è chiamata “superclasse” o “classe base“.

Caratteristiche dell’ereditarietà

  • Promuove il riutilizzo del codice permettendo alle nuove classi di utilizzare metodi e variabili della classe base.
  • Crea una relazione gerarchica tra classi.
  • Supporta la creazione di nuove classi che estendono o modificano il comportamento di classi esistenti.

La classe Veicolo contiene attributi e metodi comuni a tutti i tipi di veicoli.

public class Veicolo {
    private String marca;
    private String modello;

    public Veicolo(String marca, String modello) {
        this.marca = marca;
        this.modello = modello;
    }

    public void stampaDettagli() {
        System.out.println("Marca: " + marca + ", Modello: " + modello);
    }
}

La classe Auto estende Veicolo e aggiunge un attributo specifico per l’auto, come il numero di porte.

public class Auto extends Veicolo {
    private int numeroPorte;

    public Auto(String marca, String modello, int numeroPorte) {
        super(marca, modello); // Chiama il costruttore della superclasse
        this.numeroPorte = numeroPorte;
    }

    @Override
    public void stampaDettagli() {
        super.stampaDettagli(); // Chiama il metodo della superclasse
        System.out.println("Numero di porte: " + numeroPorte);
    }
}

La classe Moto estende anche Veicolo e può avere attributi specifici per le moto, come la presenza di un bauletto.

public class Moto extends Veicolo {
    private boolean haBauletto;

    public Moto(String marca, String modello, boolean haBauletto) {
        super(marca, modello); // Chiama il costruttore della superclasse
        this.haBauletto = haBauletto;
    }

    @Override
    public void stampaDettagli() {
        super.stampaDettagli(); // Chiama il metodo della superclasse
        System.out.println("Ha bauletto: " + (haBauletto ? "Sì" : "No"));
    }
}

Di seguito un esempio di come potresti creare istanze di Auto e Moto e stampare i loro dettagli:

public class TestEreditarieta {
    public static void main(String[] args) {
        Auto miaAuto = new Auto("Fiat", "500", 4);
        Moto miaMoto = new Moto("Ducati", "Monster", true);

        miaAuto.stampaDettagli(); // Stampa dettagli dell'auto
        miaMoto.stampaDettagli(); // Stampa dettagli della moto
    }
}

Questo esempio mostra come l’ereditarietà permetta di definire una superclasse Veicolo con comportamenti comuni, che possono essere poi estesi e specializzati dalle sottoclassi Auto e Moto. Le sottoclassi ereditano gli attributi e i metodi della superclasse e possono anche avere i loro metodi e attributi specifici.

Sei indeciso sul percorso? 💭

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626