使用抽象 类 在 Java 中实现多重继承的可能性
Possibility of multiple inheritance in Java using abstract classes
如果我们将所有抽象类的所有方法都抽象化,是否可以从Java中的多个抽象类继承?
不,Java不支持多重继承。另见 .
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();
}
}
否 java 不直接支持多重继承,因为这会导致执行时产生歧义。这个问题可以使用类似于多重继承的接口来解决,但是方法在随后的类中定义,所以它不会产生任何歧义。
如果我们将所有抽象类的所有方法都抽象化,是否可以从Java中的多个抽象类继承?
不,Java不支持多重继承。另见
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();
}
}
否 java 不直接支持多重继承,因为这会导致执行时产生歧义。这个问题可以使用类似于多重继承的接口来解决,但是方法在随后的类中定义,所以它不会产生任何歧义。