怎么在JAVA中实现多重继承?要求不光能继承行为能力,还应继承该行为特征。
有人会说,用接口。但这会有一个不如意的地方。
举个例子:
我有一个车接口,里面有个行使的方法
还有一个火箭接口,里面有个飞行的方法
我有一个车类,实现了车接口里的行使方法
有一个火箭类,实现了火箭接口的飞行方法
那么,问题来了
我想造一个不明飞行物类
要求能有车类中实现了的行使的方法,即表现出车类中实现了行使行为和特征,不光是具有行使这个能力。
还能有火箭类中实现了的飞行的方法,即表现了火箭类中实现了的飞行的行为和特征,不光是具有飞行这种行为能力。
此外,此不明飞行物类还有别的方法,比如变形的方法
解决上述问题有个要求,就是不准COPY车类中行使方法中的实现源代码和火箭类中飞行的实现源代码。
既要通过机制解决这个问题。怎么做?

解决方案 »

  1.   

    Java都不支持多重继承,当然用接口了。
      

  2.   

    按楼主的意思,我是这么理解的。即然你想做个不明飞物UFO,里面有车的行使方法,又有飞机的飞行方法,你可以让这个UFO同时实现车接口和飞机的接口,不就两个方法都有了吗,UFO类还可以自己再定义一个变型的方法。
    JAVA里一个类可以实现多个接口。
      

  3.   

    我想问你继承想达到的目的是什么?接口的意义并不是在于顶替多重继承,而是为了达到抽象的目的。既然你的车接口与火箭接口都达不到抽象的目的,那么它的存在就值得怀疑。
    继承的本意在于抽象,而不是禁止你copy代码,他的目的不是为了代码重用。
      

  4.   

    ft,既然只有行驶和飞行两个方法,当然是用interface。连一个delegting method都不肯写就太懒了吧,而且只会以后写得更多。interface Runnable {
       void run();
    }interface Flyable {
       void fly();
    }class RunObject implements Runnable {
       void run() {
          //code
       }
    }class FlyObject implements Flyable {
       void fly() {
          //code
       }
    }class Car implements Runnable {
       private Runnable runObject;   void run() {
          runObject.run();
       }
    }class Rocket implements Flyable {
       private Flyable flyObject;   void fly() {
          flyObject.fly();
       }
    }class UnknownObject implements Runnable, Flyable {
       private Runnable runObject;
       private Flyable flyObject;   void run() {
          runObject.run();
       }
       void fly() {
          flyObject.fly();
       }
    }
      

  5.   

    huxinsheng168(望M止渴)完全明白了我的意图,并提出了个很好的方法。谢谢了。qiang029(风) 没有理解我的意图nighthawk(我们孤单,我们并肩) 没有就事论事,也没有解决办法,但提出了相关机制的思想。yjh133(哈哈) 也没有就事论事,还有猜测的意思。
      

  6.   

    iambic() 的方法也不错。但稍微臃肿些。