Differenza Tra Classe Astratta Ed Ereditarietà

Differenza Tra Classe Astratta Ed Ereditarietà
Differenza Tra Classe Astratta Ed Ereditarietà

Video: Differenza Tra Classe Astratta Ed Ereditarietà

Video: Differenza Tra Classe Astratta Ed Ereditarietà
Video: CHE COSA E' UNA CLASSE ASTRATTA - Java | PROGRAMMAZIONE #16 | Vita Da Founder 2024, Novembre
Anonim

Classe astratta vs eredità

La classe astratta e l'ereditarietà sono due importanti concetti orientati agli oggetti presenti in molti linguaggi di programmazione orientati agli oggetti come Java. La classe astratta può essere considerata come una versione astratta di una classe regolare (concreta), mentre Inheritance consente alle nuove classi di estendere altre classi. La classe astratta è una classe che non può essere inizializzata ma può essere estesa. Quindi, le classi astratte hanno senso solo se il linguaggio di programmazione supporta l'ereditarietà. In Java, le classi Abstract vengono dichiarate utilizzando la parola chiave Abstract, mentre la parola chiave Extends viene utilizzata per ereditare da una (super) classe.

Cos'è la classe astratta?

In genere, le classi astratte, note anche come ABC (Abstract Base Classes), non possono essere istanziate (non è possibile creare un'istanza di quella classe). Quindi, le classi astratte hanno senso solo se il linguaggio di programmazione supporta l'ereditarietà (capacità di creare sottoclassi dall'estensione di una classe). Le classi astratte di solito rappresentano un concetto o entità astratta con implementazione parziale o nulla. Pertanto, le classi astratte agiscono come classi genitore da cui derivano classi figlie in modo che la classe figlia condivida le caratteristiche incomplete della classe genitore e la funzionalità possa essere aggiunta per completarle.

Le classi astratte possono contenere metodi astratti. Le sottoclassi che estendono una classe astratta possono implementare questi metodi astratti (ereditati). Se la classe figlia implementa tutti questi metodi Abstract, è una classe concreta. Ma in caso contrario, anche la classe figlia diventa una classe astratta. Tutto ciò significa che, quando il programmatore nomina una classe come Abstract, sta dicendo che la classe sarà incompleta e avrà elementi che devono essere completati dalle sottoclassi che ereditano. Questo è un bel modo per creare un contratto tra due programmatori, che semplifica le attività nello sviluppo del software. Il programmatore, che scrive il codice da ereditare, deve seguire esattamente le definizioni del metodo (ma ovviamente può avere la propria implementazione).

Cos'è l'ereditarietà?

L'ereditarietà è un concetto orientato agli oggetti, che consente a nuove classi di estendere altre classi. La parola chiave Extends viene utilizzata per implementare il concetto di ereditarietà nel linguaggio di programmazione Java. L'ereditarietà fornisce essenzialmente il riutilizzo del codice consentendo l'estensione delle proprietà e del comportamento di una classe esistente da parte di una nuova classe definita. Quando una nuova sottoclasse (o classe derivata) estende una super classe (o classe genitore) quella sottoclasse erediterà tutti gli attributi e metodi della super classe. La sottoclasse può facoltativamente sovrascrivere il comportamento (fornire funzionalità nuove o estese ai metodi) ereditato dalla classe genitore. In genere, una sottoclasse non può estendere più super classi (ad esempio in Java). Pertanto, non è possibile utilizzare estensioni per ereditarietà multipla. Per avere ereditarietà multipla, è necessario utilizzare le interfacce.

Qual è la differenza tra Abstract Class e Inheritance?

Le classi astratte di solito rappresentano un concetto astratto o un'entità con implementazione parziale o nulla. L'ereditarietà consente alle nuove classi di estendere altre classi. Poiché non è possibile creare istanze delle classi astratte, è necessario utilizzare il concetto di ereditarietà per utilizzare le classi astratte. Altrimenti, una classe Abstract non ha alcuna utilità. Le classi astratte possono contenere metodi astratti e quando la classe viene estesa, tutti i metodi (astratti e concreti) vengono ereditati. La classe ereditata può implementare uno o tutti i metodi. Se tutti i metodi Abstract non sono implementati, anche quella classe diventa una classe Abstract. Una classe non può ereditare da più di una classe Abstract (questa non è una qualità delle classi Abstract in sé, ma piuttosto una restrizione dell'ereditarietà).

Raccomandato: