说上说java不允许多继承,但可以同过接口实现多继承
但我看到的例子都是些讲接口的使用方法的
哪位朋友帮忙找个接口实现多继承的例子看看
最好能帮我讲讲原理,谢谢了
分不多  不好意思

解决方案 »

  1.   

    然后要说的就是C++支持多继承, Java不支持多继承.
    此外要强烈抗议的就是大量的教科书在"Java不支持多继承, 但是支持多接口...", 这类的言词给许多Java的学习者造成了很大的误解, 多接口和多继承只是在语法形式上相似, 但是不具有更多的可比性.
    Java的接口概念, C++用纯抽象类来表示.
    class IEvent
    {
    public:
        virtual void function() = 0;
    };
    这个和Java的
    interface IEvent
    {
        void function();
    }
    是一致的.
     
    但是实现多接口和多继承有着很大的差别, 特别是对于设计来说.
    接口表示一种约束关系, 而公有继承表示is-a的关系, 或者保护继承表示implements-with的关系, 而接口表达的语义叫做can-do.
    那么, 真正来完成多继承这个任务的, 往往是聚合, 当然了, 这个时候接口也可以帮忙, 不去强调约束的关系, 但是主要的功能继承源自于聚合, 而不是实现接口.
    我之前写过一篇叫做"implements-with"的文章, 更多的从设计的角度讲述了多继承的意义.
      

  2.   

    接口:人、男人、小孩、要建立个小男还的类AA就要实现上面三个接口就可以在C++等中就要多继承了!
      

  3.   

    算了吧, 我再免费布道... ...先说OO, OO是人类认识世界, 应用于编程总结出来的方法.
    三楼的设计不能说问题大,还是小,只在于是不是在系统中适用.如果能跑,而且将来的扩展没有问题,那就是好的,不一定要和现实世界表示很大的相似度.
    (当然了, 我觉得那个设计糟透了...)你们一定要记住 接口表约束的意思.
    它的意思是并非给某种类型以某种能力, 或者某种属性, 而是约束某种类型有了某种能力或者属性.考虑这个例子,class Bird implements IFly
    {
    }那么难道一定是实现了这个接口才能飞嘛? 显然不是...function Bird()
    {
        this["fly"] = function (){ /*fly code*/};
    }
    var bird = new Bird();我靠, 我不去实现什么接口, 我也飞了...体会约束的含义.下面的Java或者C# code来进一步揭示约束的含义.
    void LetBirdsFly(IFly f)
    {
        f.fly();
    }但是你这段代码传入不了其他的类型的了, 它把对象约束为IFly的实现类.说到这里吧, 接口不是为了继承而存在的. 特别是从面向接口编程的角度讲, 那就更谈不上继承父类的功能了.
    当然了, 你可以很牵强地去认为, Bird类不是从IFly接口继承到了飞的能力嘛? 呵呵, 那我的js的代码就白写了.