Differenza tra classe astratta e classe concreta

Classe astratta contro classe concreta

La maggior parte dei popolari linguaggi di programmazione orientati agli oggetti moderni come Java e C # sono basati su classi. Raggiungono i concetti orientati agli oggetti come l'incapsulamento, l'ereditarietà e il polimorfismo attraverso l'uso delle classi. Le classi sono una rappresentazione astratta di oggetti del mondo reale. Le lezioni possono essere concrete o astratte a seconda del livello di implementazione delle loro funzionalità metodologiche. Una classe concreta implementa completamente tutti i suoi metodi. Una classe astratta può essere considerata una versione limitata di una classe regolare (concreta), in cui può contenere metodi parzialmente implementati. Tipicamente, le classi concrete sono indicate come (solo) classi.

Cos'è la classe di calcestruzzo?

La classe predefinita è una classe concreta. La parola chiave class viene utilizzata per definire le classi (ad es. In Java). E di solito vengono semplicemente chiamate classi (senza l'aggettivo concreto). Le classi concrete descrivono la rappresentazione concettuale degli oggetti del mondo reale. Le classi hanno proprietà chiamate attributi. Gli attributi sono 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 si ottiene rendendo privati ​​gli attributi, mentre si creano 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 sottoclassi) da altre classi (chiamate super classi). Il polimorfismo consente al programmatore di sostituire un oggetto di una classe al posto di un oggetto della sua super classe. In genere, i nomi trovati nella definizione del problema diventano direttamente classi nel programma. E allo stesso modo, i verbi diventano metodi. Pubblico, privato e protetto sono i tipici modificatori di accesso utilizzati per le classi.

Cos'è la classe astratta?

Le classi astratte vengono dichiarate usando la parola chiave Abstract (ad es. In Java). In genere, le classi astratte, note anche come Abstract Base Classes (ABC), non possono essere istanziate (non è possibile creare un'istanza di quella classe). Quindi, le classi astratte hanno significato 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 astratto o un'entità con un'implementazione parziale o nessuna. Pertanto, le classi Abstract agiscono come classi parent da cui derivano le classi secondarie in modo che la classe figlio condivida le funzionalità incomplete della classe padre e sia possibile aggiungere funzionalità per completarle.

Le classi astratte possono contenere metodi astratti. Sottoclassi che estendono una classe astratta possono implementare questi metodi astratti (ereditati). Se la classe bambino implementa tutti questi metodi astratti, diventa una classe concreta. Ma se così non fosse, anche la classe bambino diventerà una classe astratta. Ciò che significa tutto questo è che, quando il programmatore nomina una classe come Abstract, sta dicendo che la classe sarà incompleta e che avrà elementi che devono essere completati dalle sottoclassi ereditarie. Questo è un buon 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 sua implementazione).

Qual è la differenza tra Classe astratta e Classe concreta?

Le classi astratte di solito hanno un'implementazione parziale o nessuna. D'altra parte, le classi concrete hanno sempre piena attuazione del suo comportamento. A differenza delle classi concrete, le classi astratte non possono essere istanziate. Pertanto le classi astratte devono essere estese per renderle utili. Le classi astratte possono contenere metodi astratti, ma le classi concrete non possono. Quando una classe astratta viene estesa, tutti i metodi (sia astratti che concreti) vengono ereditati. La classe ereditata può implementare uno o tutti i metodi. Se tutti i metodi astratti non sono implementati, allora anche quella classe diventa una classe astratta.