接口扩展另一个接口但实现其方法

时间:2012-04-19 11:50:22

标签: java interface extends implements

在java中,当接口扩展另一个接口时:

  1. 为什么要实施其方法?
  2. 当接口不能包含a时,如何实现其方法 方法体
  3. 如何在扩展其他接口时实现这些方法 并没有实现它?
  4. 实现其他接口的接口的目的是什么?
  5. 这有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中实现的方法之外还有实现标志。

    当我鼠标悬停时,它表示它实现了方法!!!

3 个答案:

答案 0 :(得分:62)

  

为什么要实现其方法?它如何实现其方法   当一个接口不能包含方法体?它如何实现   扩展其他接口而不实现它的方法?什么   实现另一个接口的接口的目的是什么?

接口不实现另一个接口的方法,只是扩展它们。 需要接口扩展的一个示例是:考虑您有两个方法moveForwardmoveBack的车辆界面,但您还需要合并飞机这是一种车辆,但有一些额外的方法,如{ {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的悬停说什么都与接口没有实现任何东西的基本事实无关。