从两个不同的接口调用相同的方法名称 - Java

Tae*_*wan 8 java interface class abstract diamond-problem

Java不允许多重继承来保护钻石问题.它使用接口来处理这个问题.

然后就是使用界面的情况吧

interface A{
run();
}

interface B{
run();
}

class C implements A, B{
run() {}   //Which interface we are using?
}
Run Code Online (Sandbox Code Playgroud)

当我们run()在类中调用该方法时,我们C如何确定我们使用的是哪个接口?

Aki*_*ira 10

你没有.并不重要,因为实现不是在接口上而是在类上.所以实施是独一无二的.没有歧义.

是什么,如果每个声明希望有一个不同的返回类型件事:

interface A{
    void run();
}

interface B{
    String run();
}

class C implements A, B{
    ???? run() {}
}
Run Code Online (Sandbox Code Playgroud)

这是Java中多个接口出现问题的唯一方法.


Vin*_*nie 7

不要紧.接口的目的是指示类C具有方法run().你可以依赖那种方法.

即使A和B都指定了run方法,它也只实现一次,因此没有冲突.

当你说你正在使用一个接口时,它真的意味着如何声明你的对象:

   A myobject = new C();
   myobject.run();
Run Code Online (Sandbox Code Playgroud)

VS

   B myObject = new C();
   myobject.run();
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,您正在"使用"A接口,也就是说,您的代码假设myobject对象是A类型,并且它有一个名为run()的方法.在第二种情况下,您正在"使用"接口B.