Besoin de remplacer des méthodes spécifiques d'un non-classe abstraite
Est-il possible d'avoir une classe définie comme
public class MyClass
{
public void methodA(){} //Inherit
public void methodB(){} //Inherit
public void methodC(){} //Require override
}
et alors toutes les classes, qui s'étendent de MyClass être nécessaire de remplacer methodC()
mais simplement hériter methodA()
et methodB()
?
Si c'est possible, comment le fait-on? Si il n'est pas possible, pouvez-vous proposer une solution alternative pour obtenir un résultat semblable?
EDIT:
J'ai besoin d'un non-classe abstraite parce que je veux être en mesure d'instancier cette classe trop.
nécessitant un remplacement est à peu près la définition d'une méthode abstraite ou de la classe.
Je pensais à tout cela; l'IDE et la compilation rapidement nous aide à traiter avec elle, dans le cas où nous utilisons l'abstraction; mais.. j'ai un cas où mon code pourrait devenir inutilement complexe et difficile à lire... j'ai donc décidé de créer des restrictions dans l'exécution, lors de l'essai de l'application, toutes les restrictions pop-up de l'empêcher de partir; est assez bon pour moi 🙂
Nous pouvons remplacer un non classe abstraite trop l'utilisation de polymorphisme d'exécution. Il n'y a pas besoin de base de classe abstraite, finale ou la finale de la classe.
Je pensais à tout cela; l'IDE et la compilation rapidement nous aide à traiter avec elle, dans le cas où nous utilisons l'abstraction; mais.. j'ai un cas où mon code pourrait devenir inutilement complexe et difficile à lire... j'ai donc décidé de créer des restrictions dans l'exécution, lors de l'essai de l'application, toutes les restrictions pop-up de l'empêcher de partir; est assez bon pour moi 🙂
Nous pouvons remplacer un non classe abstraite trop l'utilisation de polymorphisme d'exécution. Il n'y a pas besoin de base de classe abstraite, finale ou la finale de la classe.
OriginalL'auteur brain56 | 2013-01-11
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas exiger un remplacement d'une non-méthode abstraite.
Peut-être vous pouvez faire quelque chose de similaire à la méthode de modèle de modèle:
Ici methodC encapsule un fixe algorithme qui met en pièces qui doivent être fournies par les sous-classes.
OriginalL'auteur Thilo
Vous devez faire de votre classe de base abstraite.
Oui, et dans la question, vous avez déclaré que "s'il n'est pas possible de vous proposer une solution alternative"?
La question aussi de ne pas donner n'importe quel fond ou de motivation pour expliquer pourquoi il doit être non-abstraite.
OK, je vois votre point de maintenant. C'est juste que la réponse n'était pas claire. Je pensais que vous étiez un autre de ceux qui ne lisent pas la question. Désolé, je retire mon downvote.
OriginalL'auteur EJK
Je ne pense pas que vous faites exactement ce que vous voulez. Sinon, créer MyBaseClass comme une classe abstraite avec
methodC()
résumé des implémentations pourmethodA()
et methodB(). Tirer MyClass, l'ajout d'une mise en œuvre pourmethodC()
. Toutes les classes que vous ne voulez pas avoir d'hériter de cette mise en œuvre devrait directement à la sous-classe MyBaseClass plutôt que de Maclasse.OriginalL'auteur Patricia Shanahan
Si vous voulez une méthode pour être juste hérité d'utilisation
final
mot-clé. À force impérieuse d'en faireabstract
. Toutefois, seuls les non-abstraite classes enfant devra remplacer.OriginalL'auteur Juvanis
Autant que je sache, il n'existe aucun moyen pour forcer le remplacement d'une méthode en Java avec l'abstrait.
Vous pouvez réaliser avec
abstract
de classe en faisant lamethod as abstract
méthode.OriginalL'auteur NPKR
une façon de le faire peut être d'utiliser des mot clé virtual plutôt abstraite, mais il ne nécessitent remplacer, mais vous peut faire remplacer. si donc, vous pouvez instancier.
une autre façon et la plus recommandée est de créer une interface où vous pouvez indiquer ce que les exigences de la classe. c'est quelque chose comme abstraite, vous indiquez que besoin, mais gardez à l'esprit de l'interface n'est pas une classe. c'est plus comme pointeur. pour obtenir de plus pour l'interface, cliquez sur: https://docs.oracle.com/javase/tutorial/java/concepts/interface.html
final
mot clé permet de méthodes non-virtuel.OriginalL'auteur funny