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中多个接口出现问题的唯一方法.
不要紧.接口的目的是指示类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.