在java中,当接口扩展另一个接口时:
这有Java的主要概念!
编辑:
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
中实现的方法之外还有实现标志。
当我鼠标悬停时,它表示它实现了方法!!!
答案 0 :(得分:62)
为什么要实现其方法?它如何实现其方法 当一个接口不能包含方法体?它如何实现 扩展其他接口而不实现它的方法?什么 实现另一个接口的接口的目的是什么?
接口不实现另一个接口的方法,只是扩展它们。
需要接口扩展的一个示例是:考虑您有两个方法moveForward
和moveBack
的车辆界面,但您还需要合并飞机这是一种车辆,但有一些额外的方法,如{ {1}},moveUp
等等
最后你有:
moveDown
和飞机:
public interface IVehicle {
bool moveForward(int x);
bool moveBack(int x);
};
答案 1 :(得分:20)
接口定义行为。例如,Vehicle
接口可能会定义move()
方法。
汽车是一种车辆,但还有其他行为。例如,Car
接口可能会定义startEngine()
方法。由于Car也是Vehicle,Car
接口扩展了Vehicle
接口,因此定义了两种方法:move()
(继承)和startEngine()
。
Car界面没有任何方法实现。如果您创建一个实现Car的类(Volkswagen),它将必须为其接口的所有方法提供实现:move()
和startEngine()
。
接口可能无法实现任何其他接口。它只能扩展它。
答案 2 :(得分:7)
ad 1.它没有实现其方法。
ad 4.一个接口扩展,而不是另一个接口的目的是构建一个更具体的接口。例如,SortedMap
是扩展Map
的接口。对排序方面不感兴趣的客户端可以对Map
进行编码并处理例如TreeMap
的所有实例,这些实例实现SortedMap
。同时,对排序方面感兴趣的另一个客户端可以通过SortedMap
接口使用这些相同的实例。
在您的示例中,您将从超级接口重复这些方法。虽然合法,但它是不必要的,并且不会改变最终结果中的任何内容。无论这些方法是否存在,编译后的代码都完全相同。无论Eclipse的悬停说什么都与接口没有实现任何东西的基本事实无关。