Cette question a été posée pendant l'entrevue d'emploi, Java Development, poste étudiant
class B extends A {
public void execute() {
//some code goes here
}
}
3 Réponses :
Ceci est un exemple de modèle de modèle . La superque abstraite A impose la structure à la transformation en faisant les pièces "standard" - dans ce cas, imprimant quelque chose - puis invoque les implémentations concrètes de la sous-classe pour effectuer le traitement réel / spécifique:
abstract class A implements someIterface {
public void Execute() {
System.out.println("start process"):
doExecute();
}
protected abstract void doExecute();
}
class B extends A {
protected void doExecute() {
// some code goes here
}
}
exécuter code> au lieu de exécuter code> li>
- L'interface à appeler
Quelqu'unInterface code> au lieu de Quelqu'unInterface code> li>
- l'interface pour avoir la méthode
exécuter code> li>
ul> p> N'est pas modèle de la méthode modèle ??
Merci pour la solution, mais le nouveau développeur de la question a été invité à écrire une méthode Exécuter B> dans la classe B, d'une manière que lorsque Exécuter B> sera appelé "Démarrer le processus" devrait être imprimé. Votre solution fait la même fonctionnalité mais pas comme décrit dans les termes. Toute autre idée?
@Umnyobe Bon appel. Oui Modèle Modèle s'adapte mieux que le modèle de stratégie (bien que la stratégie s'adapte un peu, c'est un ajustement médiocre par rapport au modèle - j'ai mis à jour la réponse)
Pardon.
Je suis principalement un développeur .NET, alors ne soyez donc pas trop coupé avec moi, mais j'ai essayé un sniplet dans Données d'entrée Nous avons strong> p> Â p> la chose est (et ceci devrait em> travailler dans Il imprimera comme demandé et attendu "Démarrer processus ", cause espère que cela aide. p> p> C # code> et a fait quelque chose comme ça: P > java code> aussi), que si j'écris un code, comme si j'écris un code, comme si j'écris: p> inter.exexute code> appellera sa version implémentée (si présente dans a code>) même si réelle em> type est B code>. p>
Je crois en C #, vous devez dire spécifiquement le remplacement de la signature de la méthode, sinon le comportement par défaut est simplement de "masquer" la mise en œuvre.
Super appelle la fonctionnalité de votre classe mère.
from class A from class B
Le nouveau développeur qui écrit la méthode d'exécution ne sait pas qu'il devrait utiliser super. Ce code fera le travail, mais ce n'est pas ce à quoi on m'a demandé d'écrire.