In java when an interface extends another interface:
- Why does it implement its methods?
- How can it implement its methods when an interface can't contain a method body
- How can it implement the methods when it extends the other interface and not implement it?
- What is the purpose of an interface implementing another interface?
This has major concepts in 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();
}
In eclipse there is the implement sign besides the implemented methods in DragController
.
And when I mouse-hover it, it says that it implements the method!!!
Interface does not implement the methods of another interface but just extends them. One example where the interface extension is needed is: consider that you have a vehicle interface with two methods
moveForward
andmoveBack
but also you need to incorporate the Aircraft which is a vehicle but with some addition methods likemoveUp
,moveDown
so in the end you have:and airplane:
An interface defines behavior. For example, a
Vehicle
interface might define themove()
method.A Car is a Vehicle, but has additional behavior. For example, the
Car
interface might define thestartEngine()
method. Since a Car is also a Vehicle, theCar
interface extends theVehicle
interface, and thus defines two methods:move()
(inherited) andstartEngine()
.The Car interface doesn't have any method implementation. If you create a class (Volkswagen) that implements Car, it will have to provide implementations for all the methods of its interface:
move()
andstartEngine()
.An interface may not implement any other interface. It can only extend it.
ad 1. It does not implement its methods.
ad 4. The purpose of one interface extending, not implementing another, is to build a more specific interface. For example,
SortedMap
is an interface that extendsMap
. A client not interested in the sorting aspect can code againstMap
and handle all the instances of for exampleTreeMap
, which implementsSortedMap
. At the same time, another client interested in the sorted aspect can use those same instances through theSortedMap
interface.In your example you are repeating the methods from the superinterface. While legal, it's unnecessary and doesn't change anything in the end result. The compiled code will be exactly the same whether these methods are there or not. Whatever Eclipse's hover says is irrelevant to the basic truth that an interface does not implement anything.