Nwlapcug.com


Classi in Java perché astratte?

Classi in Java perché astratte?


Classi Java definiscono oggetti per svolgere compiti di applicazione. All'interno dei progetti Java, programmatori definiscono questi oggetti creando le dichiarazioni di classe. Una dichiarazione di classe descrive le proprietà di che eventuali istanze di oggetti della classe avrà, così come i metodi che attuerà. Nella maggior parte dei casi, programmi Java possono creare oggetti di tutte le classi con dichiarazioni di classe delineate. Tuttavia, se una classe è astratta, non può essere istanziata.

Attuazione

Normalmente, quando un programma contiene una dichiarazione di classe, altro codice può creare istanze di oggetti della classe delineato all'interno di esso. Quando questo accade, l'oggetto risultante sarà contenere i dati e implementare i metodi elencati all'interno della dichiarazione di classe. Quando un programma viene dichiarata una classe come astratta, questo non può accadere, come non è possibile creare gli oggetti della classe. Nell'esempio di codice riportato di seguito viene illustrato che dichiara una classe come astratta:

Public MustInherit class GreatHelper

A differenza con classi non astratte, il progetto in cui appare il codice non può creare istanze di oggetti "GreatHelper".

Ereditarietà

Anche se i programmi non è possibile creare un'istanza di classi astratte, possono estendere loro. L'ereditarietà Java consente ai programmatori di estendere le dichiarazioni di classe esistenti utilizzando la sintassi seguente:

public class SpecificHelper extends GreatHelper

Quando una classe estende un'altra classe, che eredita i metodi e le proprietà della classe padre. Estendere le classi possono anche fornire funzionalità aggiuntive in cima la superclasse ereditato variabili e metodi. L'ereditarietà è quindi un modo per fornire funzionalità specializzate, con le sottoclassi specializzate all'interno di un'area di responsabilità rientrano più in generale la classe padre. Con una classe astratta, questo principio di ereditarietà vale anche, quindi è possibile creare istanze di sottoclassi delle classi astratte, anche se i genitori non possono.

Scopo

Classi astratte consentono ai programmatori di creare definizioni per insiemi di oggetti che si hanno alcune comune proprietà, ma anche alcune differenze. Classi astratte in genere implementano solo parzialmente le proprie responsabilità, mentre loro sottoclassi in grado di fornire più dettagliate implementazione adatto a circostanze specifiche. Le classi astratte possono contenere metodi astratti e non astratta. Metodi astratti possono apparire solo all'interno di classi astratte, con il requisito che le sottoclassi implementerà questi metodi, che non siano troppo astratti.

Alternative

La principale alternativa alla creazione di classi astratte in Java è la creazione di interfacce. Quando un programma include un'interfaccia, le dichiarazioni di classe possono implementare questa interfaccia, anziché estenderla come nel caso di una classe astratta. Un funzioni di interfaccia come un contratto, che definisce i metodi che implementano le classi dovrà fornire, ma senza fornire dettagli di qualsiasi implementazione stessa. Un'interfaccia può elencare metodi utilizzando solo i contorni, con classi che forniscono i dettagli dei metodi di esecuzione. Nell'esempio di codice riportato di seguito viene illustrata una dichiarazione di classe che implementa un'interfaccia:

public class SomeHelper extends HelpfulOrganizer

All'interno della dichiarazione di interfaccia, metodo contorni possono apparire come segue:

public String getWords();

A differenza di classi astratte, interfacce non possono fornire alcun dettaglio di implementazione.