Solitamente le classi Abstract
vengono utilizzate quando una ha una classe che ha alcuni metodi che devono essere implementati da una delle sue classi figlie, quindi, quando si vede una classe astratta si prevede anche di vedere una serie di metodi astratti che deve essere implementato.
Quindi, anche se puoi usare classi astratte per denotare classi non istantanee, non penso che se vuoi impedire alle persone di creare un'istanza della tua classe, questa sarebbe la strada da percorrere.
Un'altra cosa che potresti fare, se vuoi impedire l'istanziazione, sarebbe dichiarare il costruttore della classe genitrice come protected
. In questo modo, non sarà visibile a classi esterne diverse da quelle che lo estendono:
public class Gauge
{
...
protected Gauge(...)
{
...
}
...
}
public class HeadingIndicator extends Gauge
{
...
public HeadingIndicator(...)
{
super(...);
}
...
}
public class AirSpeedIndicator extends Gauge
{
...
public AirSpeedIndicator(...)
{
super(...);
}
...
}
In questo modo, i mezzi per creare istanze della classe Gauge
sono limitati solo alle classi estendenti.