这是多重继承吗? (JAVA)

时间:2014-07-31 08:21:46

标签: java multiple-inheritance

有谁能解释一下下面的代码是多重继承的一个例子吗?如果不是为什么?因为有两个父类(ww1,qq1),我通过子ee1访问它。所以,正如我所想的那样,多重继承是在java中完成的。我是对的吗?

interface ee1{
    public void s();
}
class ww1 implements ee1{
   public   void s() {
        System.out.println(" In Class WW1");
    }
}
class qq1 implements ee1{
   public void s(){
        System.out.println("In Class qq1");
    }
}
class GEN_INTERFACE{
    public static void main(String[] rrrr){
            ww1 ob=new ww1();
            qq1 ob1=new qq1();
            ee1 rr;
            rr=ob;
            rr.s();
            rr=ob1;
            ob1.s();
    }
}

3 个答案:

答案 0 :(得分:1)

您的示例似乎不正确,原因如下:

  1. 您可能误认为多个类实现了相同的根接口和#34;多重继承",它实际上是指从多个根继承的单个类。

  2. 您可能错误地将类的公共成员的简单访问误认为是对父类的访问类型"特征"在继承的概念中描述。

  3. 您可能错误地通过其父接口类型之一(例如ee1)引用对象作为多重继承。

  4. 在您的示例中,您没有任何多重继承或任何继承。你的内容是:

    • 您有ww1 实施 ee1
    • 您的qq1实施 ee1且与ww1无关。
    • 你有GEN_INTERFACE(实际上是一个类,而不是一个接口),并且根本没有使用继承。
    • 您可以从静态方法ww1中的代码访问qq1main的公共成员,这也与继承无关。
    • 您可以通过其父类型ww1访问qq1ee1的所述成员。这只是普通的旧运行时多态性。

    现在,尽管如此,即使您的示例是继承,Java也不支持多重继承。它确实支持继承多个接口,但是,definition,这不是多重继承,即使它具有它的一些功能:

      

    一些面向对象的语言(如C#,Java和Ruby)实现单继承,尽管协议或接口提供了真正多重继承的一些功能。

    您可以在那里和其他地方详细了解多重继承的详细信息。

    多重继承在例如: C ++:

    class Base1 { ... };
    
    class Base2 { ... };
    
    class Derived : public Base1, public Base2 { ... };
    

    Java中没有等价物;但请注意,这使得"多重继承"事实是Derived继承自多个基类。

答案 1 :(得分:1)

为了理顺你的主张,你写了

        ww1 ob=new ww1();
        qq1 ob1=new qq1();
        ee1 rr;
        rr=ob;
        rr.s();
        rr=ob1;
        ob1.s();

用语言说,

  • ww1ee1;
  • 的子类型
  • qq1ee1;
  • 的另一个子类型
  • 您通过ww1类型的变量qq1访问rree1的实例;
  • 你声称这构成了多重继承。

你的主张在以下几点上是错误的:

  1. 您的示例只是运行时类型多态动态方法调度:通过公共接口访问不同的行为;
  2. 我可以解释术语多重继承以解决你的问题的唯一方法是#34;一个类型可以有多个继承它的孩子"。这是:

    a)适用于Java和所有其他具有类层次结构的语言;

    b)对术语"多重继承"的错误解释,它涉及一个类可能有两个父类的情况。

  3. 我希望我正确地猜测你的实际问题是什么。

答案 2 :(得分:-1)

在Java中不能有多重继承。你只能用C ++。

根据定义,多重继承意味着扩展超过1个类。由于钻石问题,任何OOP语言都不允许你有多重继承。

然而,C ++是通过编译器进行的OOP,因此他可以根据多重继承产生的粗略定义进行编译时检查。

发布前请先google:

http://en.wikipedia.org/wiki/Multiple_inheritance