Differenza tra Classe Astratto e Classe Concreta

Anonim

Classe Astratto vs Classe Concreta

La maggior parte dei popolari linguaggi di programmazione orientati ad oggetti moderni come Java e C # sono basati sulla classe. Ottengono i concetti orientati all'oggetto come l'incapsulamento, l'eredità e il polimorfismo attraverso l'uso di classi. Le classi sono una rappresentazione astratta di oggetti del mondo reale. Le classi possono essere concrete o astratte a seconda del livello di implementazione delle loro funzionalità di metodo. Una classe concreta completa tutti i suoi metodi. Una classe astratta può essere considerata come una versione limitata di una classe regolare (concreta), dove può contenere metodi parzialmente implementati. Tipicamente, le classi concreti sono definite classi (solo).

Che cosa è Classe Concreta?

La classe predefinita è una classe concreta. La parola chiave di classe viene usata per definire le classi (ad esempio in Java). Di solito sono semplicemente denominati classi (senza il calcestruzzo aggettivo). Le classi concreti rappresentano la rappresentazione concettuale degli oggetti del mondo reale. Le classi hanno proprietà denominate attributi. Gli attributi vengono implementati come variabili globali e di istanza. I metodi nelle classi rappresentano o definiscono il comportamento di queste classi. I metodi e gli attributi delle classi sono chiamati membri della classe. In genere, l'incapsulamento viene raggiunto rendendo gli attributi privati, creando metodi pubblici che possono essere utilizzati per accedere a tali attributi. Un oggetto è l'istanza di una classe. L'ereditarietà consente all'utente di estendere le classi (chiamate classi sub) da altre classi (chiamate classi super). Il polimorfismo consente al programmatore di sostituire un oggetto di una classe in luogo di un oggetto della sua super classe. Tipicamente, i nomi trovati nella definizione del problema diventano direttamente classi nel programma. E allo stesso modo i verbi diventano metodi. Pubblici, privati ​​e protetti sono i tipici modificatori di accesso utilizzati per le classi.

Che cos'è la classe astratta?

Le classi astratte vengono dichiarate usando la parola chiave astratta (ad esempio in Java). 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 dei bambini implementa tutti questi metodi astratti, diventa 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).

Qual è la differenza tra Classe Astratto e Classe Concreta?

Le classi astratte di solito hanno implementazione parziale o nessuna. D'altra parte, le classi concrete hanno sempre la piena attuazione del suo comportamento. A differenza delle classi concreti, le classi astratte non possono essere istanziate. Quindi le classi astratte devono essere estese per renderle utili. Le classi astratte possono contenere metodi astratti, ma le classi concrete non possono. Quando viene estesa una classe astratta, tutti i metodi (sia astratti che concreti) 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.