Eredità è un concetto centrale nella programmazione orientata agli oggetti (OOP) ed è spesso considerato uno dei pilastri per migliorare l'efficienza. In questo tutorial approfondirai la tua comprensione dell'eredità in Java. Imparerai come gestire i modificatori di accesso, utilizzare i costruttori e quale ruolo gioca l'incapsulamento nell'eredità.

Principali scoperte

  • L'eredità consente di ereditare proprietà e metodi da una classe.
  • Il modificatore di accesso private limita l'accesso alle variabili o ai metodi, mentre protected consente un accesso più ampio all'interno delle classi che ereditano dalla classe originale.
  • I costruttori devono essere chiamati nella sottoclasse per istanziare correttamente gli oggetti.
  • Le interfacce dei metodi possono essere utilizzate in modo generalizzato quando si hanno più classi specifiche.

Guida passo passo

Modificatori di accesso: protected vs. private

Se dichiari una variabile (ad es. colore) come protected in una classe come Veicolo, puoi utilizzare questa variabile direttamente in una classe derivata (ad es. Auto). Tuttavia, se dichiari la variabile come private, non potrai accedervi direttamente nella sottoclasse.

Eredità in Java - Fondamenti ed esempi

Questo significa concretamente che l'accesso alle variabili private è possibile solo tramite metodi Setter e Getter.

L'esempio mostra che dobbiamo utilizzare setColore e getColore per accedere alla variabile privata colore.

Ereditarietà in Java - Fondamenti ed esempi

Quando la variabile è dichiarata come protected, puoi semplicemente accedervi all'interno della classe Auto e cambiarne il valore.

Utilizzo dei costruttori nell'eredità

Nella definizione di una sottoclasse, devi assicurarti che il costruttore della superclasse venga chiamato correttamente.

Ereditarietà in Java - Fondamenti ed esempi

Questo garantisce che il colore venga inizializzato correttamente quando si crea un oggetto Auto.

Eredità in Java - Fondamenti e Esempi

Fai attenzione a definire un costruttore nella sottoclasse che passi adeguatamente i parametri della superclasse.

Ereditarietà e chiamate ai metodi

Due classi, Veicolo e Auto, ti consentono di utilizzare variabili e metodi comuni. Se definisci un metodo in Veicolo, puoi utilizzare questo metodo anche in Auto senza doverlo riscrivere.

Eredità in Java - Fondamenti ed esempi

Qui viene chiamato il metodo veicoloColoreUscire e restituisce il valore del colore fornito dal metodo getColore.

Limitazioni dell'accesso ai metodi

Se tenti di chiamare un metodo in una sottoclasse che non è disponibile per la classe, riceverai un errore di compilazione. Nel nostro esempio, deve essere passato un oggetto Veicolo per chiamare il metodo getColore.

Eredità in Java - Fondamenti ed Esempi

Questo significa praticamente che devi assicurarti che il metodo sia adatto al tuo tipo di dato prima di chiamarlo. Puoi quindi passare una bicicletta, un'auto o entrambi a un metodo che si aspetta semplicemente oggetti Veicolo.

Esempio di chiamata a metodi di istanza in contesti statici

Nota che nei metodi statici (static) la parola chiave this non può essere utilizzata, poiché non si riferisce a un'istanza specifica. In tali casi, potresti voler utilizzare un altro metodo o ristrutturare la logica.

Ereditarietà in Java - Fondamenti ed Esempi

Con questa chiamata, il colore per l'oggetto mioAuto viene correttamente visualizzato.

Riepilogo - Eredità in Java: Una guida per principianti

L'eredità è un concetto importante nella programmazione con Java, che ti aiuta a modularizzare e riutilizzare il codice. In questo tutorial hai appreso le nozioni di base sui modificatori di accesso, i costruttori e le chiamate ai metodi in relazione all'eredità.

Domande frequenti

Come posso accedere a variabili private nella sottoclasse?Non è possibile accedere direttamente a variabili private nella sottoclasse. Utilizza metodi Getter e Setter.

Qual è la differenza tra protected e private?protected consente l'accesso nella sottoclasse e nello stesso pacchetto, mentre private è accessibile solo all'interno della propria classe.

Devo definire i costruttori nella sottoclasse?Sì, se hai modificato il costruttore della superclasse, devi definire i costruttori nella sottoclasse di conseguenza.

Posso sovrascrivere liberamente i metodi delle superclassi nelle sottoclassi?Sì, puoi sovrascrivere metodi che non sono contrassegnati con final o static nella sottoclasse per implementare un comportamento specifico.