Quelqu'un fournit une suggestion pour ci-dessous mentionné: p>
dans Java8 envisager une interface ayant deux méthodes (par exemple, interface1, interface 2) Mise en œuvre de ceux à plusieurs sous-classes plus tard, je souhaite supprimer une méthode interface1 de l'une de mes sous-classes sans affecter l'autre solution est une solution possible? P>
3 Réponses :
Vous pouvez le faire en fournissant un Méthode par défaut Mise en œuvre pour la méthode code> interface1 code> dans l'interface elle-même.
interface Interface {
default void interface1() {
System.out.println("interface1");
}
void interface2();
}
class Clazz implements Interface {
@Override
public void interface2() {
System.out.println("interface2");
}
}
Si votre sous-classe déclare qu'il implémente cette interface, vous n'avez pas d'autre choix que de fournir des implémentations pour toutes les méthodes ou déclarez le résumé de la classe. Si vous voulez une classe de bétonnage qui ne pas em> implémente fonctionnellement toutes les méthodes de l'interface, voici une option: ici pendant que nous mettons en œuvre toutes les méthodes, Nous jetons une exception d'exécution si un appelant essaie d'accéder à méthodal2 () code>. p> p>
dépend de la manière dont vous définissez "Supprimer une méthode".
Si vous avez une interface p> et par exemple deux sous-classes qui l'étendent: p> class Class1 implementes Interface, Interface1 {
@Override
public void interface1(){ ... }
@Override
public void interface2(){ ... }
}
class Class2 implementes Interface {
@Override
public void interface2(){ ... }
}
Voulez-vous dire supprimer la méthode ne doit plus être disponible du tout sur la sous-classe?
Non, si vous implémentez une interface, vous disez fondamentalement "les instances de cette classe sont un nom d'interface $".
Cela me semble que vous avez besoin de regarder votre conception et de décider si votre classe est vraiment une mise en œuvre de l'interface. N'oubliez pas que le LSP dit que toutes les classes qui implémentent une interface doivent être interchangeables.