Dans Java quand une interface étend une autre interface:
Cela a des concepts majeurs en Java!
EDIT:
public interface FiresDragEvents {
void addDragHandler(DragHandler handler);
void removeDragHandler(DragHandler handler);
}
public interface DragController extends FiresDragEvents {
void addDragHandler(DragHandler handler);
void removeDragHandler(DragHandler handler);
void dragEnd();
void dragMove();
}
Dans Eclipse, il y a le signe implémentation en plus des méthodes implémentées dans DragController
.
Et quand je passe la souris dessus, il est écrit que la méthode est implémentée !!!
Pourquoi met-il en œuvre ses méthodes? Comment peut-il implémenter ses méthodes lorsqu'une interface ne peut pas contenir de corps de méthode? Comment peut-il implémenter les méthodes lorsqu'il étend l'autre interface sans l'implémenter? Quel est le but d'une interface implémentant une autre interface?
Interface n'implémente pas les méthodes d'une autre interface mais les étend simplement. Voici un exemple d’extension d’interface: considérez que vous avez une interface véhicule avec deux méthodes moveForward
et moveBack
, mais vous devez également incorporer l’appareil qui est un véhicule mais avec quelques méthodes d’ajout comme moveUp
, moveDown
donc vous avez:
public interface IVehicle {
bool moveForward(int x);
bool moveBack(int x);
};
et avion:
public interface IAirplane extends IVehicle {
bool moveDown(int x);
bool moveUp(int x);
};
Une interface définit le comportement. Par exemple, une interface Vehicle
peut définir la méthode move()
.
Une voiture est un véhicule, mais a un comportement supplémentaire. Par exemple, l'interface Car
peut définir la méthode startEngine()
. Puisqu'une voiture est aussi un véhicule, l'interface Car
étend l'interface Vehicle
et définit donc deux méthodes: move()
(hérité) et startEngine()
.
L'interface Car n'a aucune implémentation de méthode. Si vous créez une classe (Volkswagen) qui implémente Car, elle devra fournir des implémentations pour toutes les méthodes de son interface: move()
et startEngine()
.
Une interface ne peut implémenter aucune autre interface. Il ne peut que l’étendre.
ad 1. Il n'implémente pas ses méthodes.
ad 4. Le but d’une interface extension, sans en implémenter une autre, est de construire une interface plus spécifique. Par exemple, SortedMap
est une interface qui étend Map
. Un client non intéressé par le tri peut coder contre Map
et gérer toutes les instances, par exemple, de TreeMap
, qui implémente SortedMap
. En même temps, un autre client intéressé par l'aspect trié peut utiliser ces mêmes instances via l'interface SortedMap
.
Dans votre exemple, vous répétez les méthodes de la superinterface. Bien que légal, il est inutile et ne change rien au résultat final. Le code compilé sera exactement le même que ces méthodes soient présentes ou non. Tout ce que dit le survol d'Eclipse est sans rapport avec la vérité de base selon laquelle une interface n'implémente rien .