今天看thinking in java看到一个接口的问题,很是疑惑,发出来讨论一下
kenli 2003-12-24 10:46:54 //: Adventure.java
// Multiple interfaces
import java.util.*;
interface CanFight {
void fight();
}
interface CanSwim {
void swim();
}
interface CanFly {
void fly();
}
class ActionCharacter {
public void fight() {}
}
class Hero extends ActionCharacter
implements CanFight, CanSwim, CanFly {
public void swim() {}
public void fly() {}
}
public class Adventure {
static void t(CanFight x) { x.fight(); }
static void u(CanSwim x) { x.swim(); }
static void v(CanFly x) { x.fly(); }
static void w(ActionCharacter x) { x.fight(); }
public static void main(String[] args) {
Hero i = new Hero();
t(i); // Treat it as a CanFight
u(i); // Treat it as a CanSwim
v(i); // Treat it as a CanFly
w(i); // Treat it as an ActionCharacter
}
}
Hero的父类ActionCharacter 定义了fight,Hero实现CanFight的时候就继承了ActionCharacter 的fight算是实现了CanFight的fight,真是奇怪。是不是只要在类(及其祖先类)定义了某个接口实现的method,就算implement的method么?如果实现的多个接口的Metho名称冲突怎样?是不是实现一个就都算数了。