初学java,不要见笑!
interface CanFly {
void fly();
}interface CanSwim {
void swim();
}interface CanFight{
void fight();
}class Action{
public void fight1()
{
System.out.println("fight");
}
}class hero extends Action implements CanFly,CanSwim,CanFight  {
public void swim(){System.out.println("swim");}
public void fly(){System.out.println("fly");}

}}
public class TestMain{
public static void t(CanFight x){x.fight();}
public static void u(CanFly x){x.fly();}
public static void v(CanSwim x){x.swim();}
public static void w(Action x){x.fight();}
public static void main(String[] args) {
hero h = new hero();
t(h);
u(h);
v(h);
w(h);
}
}
这是thinginjava3上的一个例子! 不明白为什么不能这样写
class hero implements CanFly,CanSwim,CanFight  {
public void swim(){System.out.println("swim");}
public void fly(){System.out.println("fly");}
public void fight(){System.out.println("fight");}}

解决方案 »

  1.   

    楼主有试过这样不可以吗?另外,java里不允许多重继承,你这个例子也不是多重继承,也就是不允许extends A,B
    所以要通过interface
      

  2.   

    ^_^,可以,tij可能有其他目的,他并没有用到实现接口这种方法,他是用了一种依赖来处理
      

  3.   

    java 里是不能有多重继承,但是可以通过interface来实现类似的功能!
      

  4.   

    class hero extends Action implements CanFly,CanSwim,CanFight  

    class hero implements CanFly,CanSwim,CanFight  
    的区别?
      

  5.   

    楼主关键的地方没有搞清楚,就是java的规范,在java2中继承只支出单继承,多实现.就说,继承只能支持单继承,但是实现就可以多实现.其实多实现的一方面就是源于单继承的局限.
      java通过接口可以实现很多架构上的东西,继承有其有点,同样也有其缺点.这是不可避免的.
      现在的j2ee架构的设计思想是面向接口变成,同时基于组件开发.希望这能对你的继承的理解.
      

  6.   

    明白点了,没有实现CanFight中的方法,但是利用了Action中fight方法!
      

  7.   

    明白点了,没有实现CanFight中的方法,但是利用了Action中fight方法!
    ------------------------------------------------------------------
    不是吧?!那两个方法是不同名字的.
    TIJ上面的程序只是例子而已,这个程序说明了单继承多实现.