Java中使用抽象类的多重继承的可能性

时间:2018-08-03 06:39:21

标签: java inheritance abstract-class multiple-inheritance

如果我们将所有抽象类的所有方法都抽象化,是否可以从Java中的多个抽象类继承?

3 个答案:

答案 0 :(得分:0)

Java不支持多重继承   当在超类和子类中都存在具有相同签名的方法时,就会出现问题。

钻石问题:

    GrandParent
       /     \
      /       \
  Parent1      Parent2
      \       /
       \     /
         Test
// A Grand parent class in diamond
class GrandParent
{
    void fun()
    {
        System.out.println("Grandparent");
    }
}

// First Parent class
class Parent1 extends GrandParent
{
    void fun()
    {
        System.out.println("Parent1");
    }
}

// Second Parent Class
class Parent2 extends GrandParent
{
    void fun()
    {
        System.out.println("Parent2");
    }
}


// Error : Test is inheriting from multiple
// classes
class Test extends Parent1, Parent2
{
   public static void main(String args[])
   {
       Test t = new Test();
       t.fun();
   }
}

答案 1 :(得分:0)

没有Java不直接支持多重继承,因为这将在执行时导致歧义。可以使用与多重继承类似的接口来解决此问题,但方法是在后续类中定义的,因此不会造成任何歧义。

答案 2 :(得分:-1)

否,Java不支持多重继承。另请参见Abstract classes and Multiple Inheritance