Cosa cos’è l’ereditarietà?
L’ereditarietà è un meccanismo in cui una classe acquisisce la proprietà di un’altra classe. Ad esempio, un bambino eredita i tratti dei suoi genitori. Con l’ereditarietà, possiamo riutilizzare i campi e i metodi della classe esistente. Quindi, l’ereditarietà facilita la riusabilità ed è un concetto importante di OOP.
In questo tutorial imparerai-
- Tipi di ereditarietà
- Ereditarietà in Java
- Java Esempio di ereditarietà
- Super parola chiave
- Impara l’ereditarietà in OOP con esempio
Tipi di ereditarietà
Esistono Vari tipi di ereditarietà in Java:
Single Inheritance:
In Single Inheritance una classe estende un’altra classe (una sola classe).
Nel diagramma sopra, la Classe B estende solo la Classe A. La Classe A è una superclasse e la classe B è una sottoclasse.
Ereditarietà multipla:
In Multiple Inheritance, una classe che estende più di una classe. Java non supporta l’ereditarietà multipla.
Come da diagramma sopra, la Classe C estende la Classe A e la Classe B.
Multilevel Inheritance:
In Multilevel Inheritance, una classe può ereditare da una classe derivata. Quindi, la classe derivata diventa la classe base per la nuova classe.
Come mostrato nel diagramma, la classe C è una sottoclasse di B e B è una della sottoclasse Classe A.
Hierarchical Inheritance:
In Hierarchical Inheritance, una classe viene ereditata da molte sottoclassi.
Come nell’esempio precedente, le classi B, C e D ereditano lo stesso classe A.
Ereditarietà ibrida:
L’ereditarietà ibrida è una combinazione di ereditarietà singola e multipla.
Come nell’esempio precedente, tutti i membri pubblici e protetti di Classe A sono ereditato nella Classe D, prima tramite la Classe B e poi tramite la Classe C.
Nota: Java non supporta l’ereditarietà ibrida / multipla
Ereditarietà in Java
JAVA INHERITANCE è un meccanismo in cui una classe acquisisce la proprietà di un’altra classe. In Java, quando esiste una relazione “Is-A” tra due classi, usiamo l’ereditarietà. La classe genitore è chiamata super class e la classe ereditata è chiamata sottoclasse. La parola chiave extends
viene utilizzata dalla sottoclasse per ereditare le caratteristiche della superclasse.
Ereditarietà è importante poiché porta alla riutilizzabilità del codice.
Sintassi dell’ereditarietà Java:
class subClass extends superClass { //methods and fields }
Ereditarietà Java E xample
Super parola chiave
La parola chiave super è simile a “questa” parola chiave.
La parola chiave super può essere utilizzata per accedere a qualsiasi membro di dati o metodi della classe genitore.
La parola chiave Super può essere utilizzata a livello di variabile, metodo e costruttore.
Sintassi:
super.<method-name>();
Learn Inheritance in OOP’s with Example
Considera la stessa applicazione bancaria dell’esempio precedente .
Dovremmo aprire due diversi tipi di conto, uno per il risparmio e un altro per il controllo (noto anche come corrente).
Confrontiamo e studiamo come possiamo affrontare la programmazione da una prospettiva di programmazione strutturata e orientata agli oggetti. Approccio strutturale: Nella programmazione strutturata, creeremo due funzioni:
- Una per prelevare
- E l’altra per l’azione di deposito.
Poiché il funzionamento di queste funzioni rimane lo stesso in tutti gli account.
L’approccio di OOP: Durante l’utilizzo dell’approccio di programmazione OOP. Creeremmo due classi.
- Ognuno con implementazione delle funzioni di deposito e prelievo.
- Ciò comporterà un lavoro extra ridondante.
Richiesta di modifica nel software
Ora c’è un cambiamento nella specifica dei requisiti per qualcosa che è così comune nell’industria del software. Dovresti aggiungere la funzionalità Conto bancario privilegiato con la funzione di scoperto. Per uno sfondo, lo scoperto è una struttura in cui puoi prelevare un importo superiore a quello disponibile sul saldo del tuo account.
Approccio strutturale: utilizzando l’approccio funzionale, devo modificare la mia funzione di ritiro, che è già testato e di base. E aggiungere un metodo come di seguito si prenderà cura dei nuovi requisiti.
Approccio di OOP: utilizzando l’approccio di OOP, devi solo scrivere una nuova classe con un’implementazione unica della funzionedraw. Non abbiamo mai toccato il pezzo di codice testato.
Un’altra richiesta di modifica
Cosa succede se il requisito cambia ulteriore? Piace aggiungere un conto di carta di credito con il proprio requisito unico di depositi.
Approccio strutturale: utilizzando l’approccio strutturale devi modificare la parte testata del codice di deposito ancora.
Approccio OOP “: ma usando l’approccio orientato agli oggetti, creare una nuova classe con la sua implementazione unica del metodo di deposito (evidenziato in rosso nell’immagine sotto).
Quindi, anche se inizialmente la programmazione strutturale sembra un approccio facile, l’OOP vince a lungo termine.
Vantaggio dell’ereditarietà negli OOP
Ma si può sostenere che in tutte le classi si hanno parti di codice ripetute.
Per risolvere questo problema, crei una classe genitore, dì “account” e implementa la stessa funzione di deposito e prelievo. E fai in modo che le classi figlie ereditino la classe “account”. In modo che abbiano accesso alle funzioni di prelievo e deposito nella classe account.
Le funzioni non devono essere implementate individualmente. Questa è l’ereditarietà in java. .