Java的“多重继承”
接口只是比抽象类“更纯”的一种形式。它的用途并不止那些。由于接口根本没有具体的实施细节——也就是说,没有与存储空间与“接口”关联在一起——所以没有任何办法可以防止多个接口合并到一起。这一点是至关重要的,因为我们经常都需要表达这样一个意思:“x从属于a,也从属于b,也从属于c”。在C++中,将多个类合并到一起的行动称作“多重继承”,而且操作较为不便,因为每个类都可能有一套自己的实施细节。在Java中,我们可采取同样的行动,但只有其中一个类拥有具体的实施细节。所以在合并多个接口的时候,C++的问题不会在Java中重演。
在一个衍生类中,我们并不一定要拥有一个抽象或具体(没有抽象方法)的基础类。如果确实想从一个非接口继承,那么只能从一个继承。剩余的所有基本元素都必须是“接口”。我们将所有接口名置于implements关键字的后面,并用逗号分隔它们。可根据需要使用多个接口,而且每个接口都会成为一个独立的类型,可对其进行上溯造型。

解决方案 »

  1.   

    还是糊涂!到底该怎么实现:
    C++中,有类A、B,如果类C继承了A和B,那么就可以直接用C调用A或者B中实现了的方法。
    能否举个例子?
      
      

  2.   

    在Java中不可以!!!!!
    这是语言设计时已经考虑的问题。java不打算实现这样的东西。
      

  3.   

    另外,java的implement支持多继承,就是说a接口可以同时继承b,c,d接口。
      

  4.   

    不要被c++限制你的思路,不过真的有很多人曾经深爱过,也深爱着C++我就是其中之一,
    interface是一个很不错的东东,他可以帮助你设计一个层次结构跟简单的framework在设计时适当的使用interface&abtract class会使其结构优美,灵活,适应性好。(可以参看design parten)
    使用接口几乎可以实现任何c++中能够实现的结构。在多重继承时要多考虑一下时不是值得该使用什么样的方式,不要盲目使用多继承
    你所说的那种情况在java中是完全可以实现的,但是干吗要那样呢,

    interface B{
       void fly();
    }
    class C {
       void swim(){System.out.print("Swiming");};
    }
    class A extends C implements B{
       void fly(){System.out.print("fly");}
    }public class MutilExtends extends A{})bless U!!!   
      

  5.   

    To:aprim(四楞子)
    非常感谢,你解开了我心中的疑惑!也谢谢其他几位。
    分不多,略表心意!