56 votes

Comment forcer une méthode à être surchargée en java ?

Je dois créer un grand nombre de classes très similaires qui n'ont qu'une seule méthode différente entre elles. J'ai donc pensé que la création d'une classe abstraite serait un bon moyen d'y parvenir. Mais la méthode que je veux surcharger (disons la méthode foo()) n'a pas de comportement par défaut. Je ne veux pas garder une implémentation par défaut, forçant toutes les classes d'extension à implémenter cette méthode. Comment dois-je m'y prendre ?

87voto

Pablo Santa Cruz Points 73944

Vous avez besoin d'un abstrait sur votre classe de base :

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

De cette façon, vous ne spécifiez pas un comportement par défaut y vous forcez les classes non-abstraites héritant de BaseClass pour spécifier une mise en œuvre pour foo .

11voto

Jens Hoffmann Points 1468

Il suffit de définir foo() comme une méthode abstraite dans la classe de base :

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

Véase Les tutoriels Java™ (Interfaces et héritage) pour plus d'informations.

9voto

Sean Patrick Floyd Points 109428

Il suffit de rendre la méthode abstraite.

Cela obligera toutes les sous-classes à l'implémenter, même si elle est implémentée dans une super-classe de la classe abstraite.

public abstract void foo();

5voto

Buhake Sindi Points 38654

Si vous avez une classe abstraite, alors faites en sorte que votre méthode (disons foo abstrait également)

public abstract void foo();

Alors toutes les sous-classes devront surcharger foo .

4voto

vitaut Points 10255

Faites cette méthode abstract .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X