Creare una classe astratta in Java

Una classe astratta in Java è una classe che contiene uno o più metodi astratti, che sono semplicemente dichiarazioni di metodo senza corpo - che è, senza codice eseguibile che implementa la classe o il metodo. Un metodo astratto è come un prototipo di un metodo, dichiarando tipo di ritorno e il parametro lista del metodo, ma non fornendo una effettiva attuazione del metodo.

Non è possibile creare un'istanza di una classe astratta. Tuttavia, è possibile creare una sottoclasse che estende una classe astratta e fornisce un'implementazione dei metodi astratti definiti dalla classe astratta. È possibile creare un'istanza della sottoclasse.

Per creare un metodo astratto, si specifica il modificatore di astratto e sostituire il corpo del metodo, con un punto e virgola:

astratto ritorno di tipo metodo-nome pubblico (parametro-list);

Ecco un esempio:

public abstract int hit (int batSpeed);

Per creare una classe astratta, si utilizza l'astratto sulla dichiarazione della classe e includere almeno un metodo astratto. Per esempio:

pubblico class sfera astratta
{
public abstract int hit (int batSpeed);
}

È possibile creare una sottoclasse di una classe astratta come questo:

public class BaseBall estende Palla
{
public int hit (int batSpeed)
{
// Codice che implementa il metodo hit va qui
}
}

Quando si sottoclasse una classe astratta, la sottoclasse deve fornire un'implementazione per ciascun metodo astratto nella classe astratta. In altre parole, si deve sostituire ogni metodo astratta.

Le classi astratte sono utili quando si desidera creare un tipo generico che viene utilizzato come superclasse per due o più sottoclassi, ma la superclasse in sé non rappresenta un oggetto reale. Se tutti i dipendenti sono o stipendiato o ogni ora, per esempio, ha senso per creare una classe Employee astratta e quindi utilizzarlo come classe base per le sottoclassi SalariedEmployee e HourlyEmployee.

Qui ci sono alcuni dettagli aggiuntivi relativi classi astratte:

  • Non tutti i metodi di una classe astratta devono essere astratto. Una classe può fornire un'implementazione per alcuni dei suoi metodi, ma non altri. In realtà, anche se una classe non ha metodi astratti, si può ancora dichiarare come astratta. (In questo caso, però, la classe non può essere istanziata.)
  • Un metodo privato non può essere astratto. Tutti i metodi astratti devono essere pubbliche.
  • Una classe non può essere sia astratta e finale.