使用具有相同方法的两个接口实现多重继承

时间:2012-03-19 10:03:04

标签: java oop multiple-inheritance

我理解多重继承的概念,虽然我试图访问在两个接口中给出的相同方法。例如: -

interface Interface1{ 
       int show();
       void display();
}

interface Interface2 {
int show();
void display();
}

class Impl implements Interface1, Interface2 {
       // how to override show() and display() methods such that 
       // i could access both the interfaces
}

6 个答案:

答案 0 :(得分:5)

由于接口没有方法定义。你覆盖哪个界面的show方法无关紧要。

答案 1 :(得分:1)

您可以使用相同的方法实现2个接口。不会发生编译错误。 但是当你这样做时

class A implements Interface1, Interface2
{
}

接口的类似方法将被Interface2的方法覆盖。 因此,在你的A类中,只有一种方法而不是两种方法。

如果我错了,请纠正我。

答案 2 :(得分:0)

Interface1 i1 = new impl();
Interface2 i2 = new impl();
i1.show();
i2.show();

在这两种情况下,您似乎都在调用两种不同接口的两种不同方法。但由于接口方法没有正文部分,因此将执行相同的Impl类方法。

因此,通过哪种参考调用这些方法无关紧要。

答案 3 :(得分:0)

所有接口都声明X方法将存在于类中。如果两个接口定义了相同的方法,并且如果一个类实现了两个接口,那么该类将只有一个方法。该方法将满足两个接口的要求。无法在单个类中定义两次相同的方法签名,以便为每个接口实现不同的实现。

换句话说,在下面的代码中,两个show的调用都执行相同的方法:

Impl impl = new Impl();
((Interface1) impl).show();
((Interface2) impl).show();

答案 4 :(得分:0)

接口只提供合同,或者你可以说限制来实现某些特定的东西。如果两个接口提供相同的合同(在您的情况下),那么实现类将只实现一个合同(因为两个合同之间没有区别)。

答案 5 :(得分:0)

@RahulBorkar我不相信这是正确的。如果您有两个具有相同签名但返回类型不同的接口,则会根据您使用的引用获得一个接口。

例如,如果您创建一个对象并放入Instance1引用,则会获得Instance1方法。如果您使用相同的对象,将其放在Instance2引用中,您将获得Instance2方法。这至少对于课程来说似乎有用。它不是基于返回类型,而是基于调用类型。