Differenza tra classe astratta e classe concreta

Differenza tra classe astratta e classe concreta
Differenza tra classe astratta e classe concreta

Video: Differenza tra classe astratta e classe concreta

Video: Differenza tra classe astratta e classe concreta
Video: Classi Astratte - JAVA TUTORIAL ITALIANO 31 2024, Dicembre
Anonim

Classe astratta vs 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 di 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 funzionalità del metodo. Una classe concreta implementa completamente tutti i suoi metodi. Una classe astratta può essere considerata come una versione limitata di una classe normale (concreta), dove può contenere metodi parzialmente implementati. Tipicamente, le classi concrete sono indicate come (solo) classi.

Cos'è Concrete Class?

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 indicati come classi (senza l'aggettivo concrete). 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, creando al contempo 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 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 superclasse. Tipicamente, 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 utilizzando la parola chiave Abstract (ad es. in Java,). In genere, le classi astratte, note anche come classi di base astratte (ABC), non possono essere istanziate (non è possibile creare un'istanza di quella classe). Quindi, le classi astratte sono significative da avere 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 un'entità astratta con implementazione parziale o assente. Pertanto, le classi astratte fungono da classi madri da cui derivano le classi figlie in modo che la classe figlia condivida le caratteristiche incomplete della classe genitore e le funzionalità possano 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 Abstract, diventa 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 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 da ereditare, deve seguire esattamente le definizioni del metodo (ma ovviamente può avere la propria implementazione).

Qual è la differenza tra Classe astratta e Classe concreta?

Le classi astratte di solito hanno un'implementazione parziale o nulla. D' altra parte, le classi concrete hanno sempre la 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 non le classi concrete. 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 vengono implementati, anche quella classe diventa una classe astratta.

Consigliato: