Подтвердить что ты не робот

Интерфейс расширяет другой интерфейс, но реализует его методы

В java, когда интерфейс расширяет другой интерфейс:

  • Почему он реализует свои методы?
  • Как он может реализовать свои методы, когда интерфейс не может содержать метод тела
  • Как реализовать методы, когда он расширяет другой интерфейс и не реализовать его?
  • Какова цель интерфейса, реализующего другой интерфейс?

Это основные понятия в 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();
}

В eclipse есть знак реализации помимо реализованных методов в DragController.

И когда я наводил его мышью, он говорит, что он реализует метод!!!

4b9b3361

Ответ 1

Почему он реализует свои методы? Как он может реализовать свои методы когда интерфейс не может содержать тело метода? Как он может реализовать методы, когда он расширяет другой интерфейс и не реализует его? Какие является целью интерфейса, реализующего другой интерфейс?

Интерфейс не реализует методы другого интерфейса, а просто расширяет их. Одним из примеров, когда требуется расширение интерфейса, является: считайте, что у вас есть интерфейс транспортного средства с двумя способами moveForward и moveBack, но также вам необходимо включить Aircraft, который является транспортным средством, но с некоторыми дополнительными методами, такими как moveUp, moveDown so в конце концов у вас есть:

public interface IVehicle {
  bool moveForward(int x);
  bool moveBack(int x);
};

и самолет:

public interface IAirplane extends IVehicle {
  bool moveDown(int x);
  bool moveUp(int x);
};

Ответ 2

Интерфейс определяет поведение. Например, интерфейс Vehicle может определять метод move().

Автомобиль - это транспортное средство, но имеет дополнительное поведение. Например, интерфейс Car может определять метод startEngine(). Поскольку Car также является транспортным средством, интерфейс Car расширяет интерфейс Vehicle и таким образом определяет два метода: move() (унаследовано) и startEngine().

Интерфейс Car не имеет никакой реализации метода. Если вы создадите класс (Volkswagen), который реализует Car, он должен будет обеспечить реализацию для всех методов своего интерфейса: move() и startEngine().

Интерфейс может не реализовывать какой-либо другой интерфейс. Он может только расширить его.

Ответ 3

ad 1. Он не реализует свои методы.

ad 4. Назначение одного интерфейса , расширяющего, а не другого, заключается в создании более конкретного интерфейса. Например, SortedMap - это интерфейс, который расширяет Map. Клиент, не заинтересованный в аспекте сортировки, может кодировать Map и обрабатывать все экземпляры, например, TreeMap, который реализует SortedMap. В то же время другой клиент, заинтересованный в отсортированном аспекте, может использовать те же экземпляры через интерфейс SortedMap.

В вашем примере вы повторяете методы из суперинтерфейса. Хотя он юридический, он не нужен и ничего не меняет в конечном результате. Скомпилированный код будет точно таким же, существуют ли эти методы или нет. Независимо от того, что говорит наводнение Eclipse, он не имеет отношения к основной истине, что интерфейс ничего не реализует.