2013-06-07 22 views
5

Ho due domande davvero. Sto cercando di capire come funziona l'ereditarietà.cosa deve essere implementato da una classe astratta in java?

Se ho una classe astratta da ereditare e ha un metodo che non è etichettato come astratto, questo metodo deve ancora essere implementato nella sottoclasse?

Se ho una sottoclasse che eredita da un'altra sottoclasse, che eredita da una classe astratta, la sottoclasse più bassa deve implementare i metodi nella classe astratta? Oppure, poiché i metodi sono stati implementati nella sottoclasse centrale, non è necessario implementarli nuovamente?

Grazie!

+0

No. Sì. :) –

risposta

13

Una classe astratta è una classe dichiarata astratta. Può o non può includere metodi astratti. Le classi astratte non possono essere istanziate, ma possono essere sottoclassate.

Un metodo astratto è un metodo dichiarato senza un'implementazione (senza parentesi, e seguita da una virgola), in questo modo:

abstract void moveTo(double deltaX, double deltaY); 

Se una classe include metodi astratti, la classe stessa deve essere dichiarato astratto, come in:

public abstract class GraphicObject { 
    // declare fields 
    // declare non-abstract methods 
    abstract void draw(); 
} 

Quando una classe astratta è una sottoclasse, la sottoclasse di solito fornisce implementazioni per tutti i metodi astratti nella sua classe genitore. Tuttavia, se così non fosse, la sottoclasse deve essere dichiarata astratta

1
  1. Se il metodo non è astratta è stato implementato già, quando si sottoclasse della classe astratta si eredita l'implementazione del metodo, re-implementando sarebbe sovrascrivendolo. Se il metodo è stato dichiarato astratto, è necessario implementare o ottenere un errore in fase di compilazione se la sottoclasse non viene dichiarata astratta.
  2. Se si eredita da una classe A extends AbstractClass non astratta, A deve aver implementato qualsiasi metodo astratto o ancora compilato. Se non ha implementato alcuna classe astratta, allora anche A deve essere astratto e la responsabilità di implementare i metodi astratti ricade su sottoclassi di A. Qualsiasi subconduttore che non implementa il metodo deve anche essere dichiarato astratto fino a quando una sottoclasse non lo implementa.
Problemi correlati