Domanda Come forzare un metodo per essere sovrascritto in java?


Devo creare molte classi molto simili che hanno solo un metodo diverso tra loro. Quindi ho pensato che creare una classe astratta sarebbe stato un buon modo per ottenere questo risultato. Ma il metodo che voglio sovrascrivere (ad esempio, metodo foo ()) non ha un comportamento predefinito. Non voglio mantenere alcuna implementazione predefinita, costringendo tutte le classi di estensione a implementare questo metodo. Come faccio a fare questo?


44
2017-11-17 11:39


origine


risposte:


Hai bisogno di un astratto metodo sulla tua classe base:

public abstract class BaseClass {
    public abstract void foo();
}

In questo modo, non si specifica un comportamento predefinito e forza le classi non astratte che ereditano da BaseClass per specificare un'implementazione per foo.


73
2017-11-17 11:40



Basta definire foo () come metodo astratto nella classe base:

public abstract class Bar {
   abstract void foo();
}

Vedere The Java Tutorials (Interfaces and Inheritance) per maggiori informazioni.


11
2017-11-17 11:42



Basta rendere astratto il metodo.

Questo costringerà tutte le sottoclassi a implementarlo, anche se è implementato in una super classe della classe astratta.

public abstract void foo();

9
2017-11-17 11:41



Se hai una classe astratta, quindi fai il tuo metodo (diciamo foo astratto pure)

public abstract void foo();

Quindi tutte le sottoclassi dovranno eseguire l'override foo.


5
2017-11-17 11:42



Fai questo metodo abstract.


4
2017-11-17 11:41