Differenza tra classe astratta e eredità Differenza tra classe astratta e eredità

Anonim

Classe astratto e eredità

Classe astratto e eredità sono due importanti nomi orientati agli oggetti trovati 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 l'eredità consente nuove classi per 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'eredità. In Java, le classi astratte vengono dichiarate utilizzando la parola chiave astratta, mentre l'estensione parola chiave viene usata per ereditare da una classe (super).

Che cos'è la classe astratta?

Tipicamente, le classi astratte, noti anche come classi astratte di base (ABC), non possono essere istanziate (un'istanza di quella classe non può essere creata). Quindi le classi astratte hanno senso solo se il linguaggio di programmazione supporta l'eredità (capacità di creare sottoclassi dall'estensione di una classe). Le classi astratte rappresentano di solito un concetto astratto o entità con l'implementazione parziale o nessuna. Di conseguenza, le classi astratte agiscono come classi parentali da cui vengono derivate le classi figlio in modo che la classe figlio condivisca le funzionalità incomplete della classe padre e le funzionalità possono essere aggiunte 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 astratti, è una classe concreta. Ma se non lo fa, la classe figlia diventa anche una classe astratta. Quello che tutto questo significa è che quando il programmatore nomina una classe come un abstract, dice che la classe sarà incompleta e avrà gli elementi che devono essere completati dalle sottoclassi ereditarie. 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 per ereditare, deve seguire esattamente le definizioni del metodo (ma ovviamente può avere una propria implementazione).

Che cos'è l'eredità?

L'ereditarietà è un concetto orientato agli oggetti, che consente alle nuove classi di estendere altre classi. Estende la parola chiave usata per implementare il concetto di ereditarietà nel linguaggio di programmazione Java. L'eredità prevede essenzialmente il riutilizzo del codice, consentendo l'estensione delle proprietà e del comportamento di una classe esistente da una classe di nuova definizione. Quando una nuova sottoclasse (o una classe derivata) estende una classe super (o classe parent) che la sottoclasse erediterà tutti gli attributi ei metodi della super classe. La sottoclasse può opzionalmente ignorare il comportamento (fornire funzionalità nuove o estese ai metodi) ereditati dalla classe padre.In genere, una sottoclasse non può estendere più classi super (ad esempio in Java). Di conseguenza, non è possibile utilizzare estensioni per più ereditarietà. Per avere più ereditarietà, è necessario utilizzare le interfacce.

Qual è la differenza tra Classe Astratto e Eredità?

Le classi astratte rappresentano di solito un concetto astratto o un'entità con implementazione parziale o nessuna. L'eredità consente nuove classi per estendere altre classi. Poiché, le classi astratte non possono essere istanziate, è necessario utilizzare il concetto di ereditarietà per utilizzare le classi astratte. Altrimenti, una classe astratta non ha alcun uso. Le classi astratte possono contenere metodi astratti e quando la classe viene estesa, tutti i metodi (astratto e concreto) sono ereditati. La classe ereditaria può implementare uno o tutti i metodi. Se tutti i metodi astratti non vengono implementati, allora la classe diventa anche una classe astratta. Una classe non può ereditare da più di una classe astratta (non è una qualità di classi astratte di per sé, ma piuttosto una restrizione dell'eredità).