![](/img/trans.png)
[英]Implement two interfaces with the same method signature but different return type
[英]Two interfaces require to implement the method with the same name
如果两个接口要求用相同的名称实现该方法,则method()会被调用两次。 我需要为2个不同的接口实现2种方法,如何才能同时实现这两种方法以完成不同的工作?
public class MainClass implements BarObj.BarInt, FooObj.FooInt{
MainClass(){
}
void trigger()
{
new BarObj(this);
new FooObj(this);
}
@Override
public void method() {
System.out.println("I DONT KNOW WHICH METHOD");
}
public static void main(String[] args) {
new MainClass().trigger();
}
}
public class BarObj {
interface BarInt
{
void method();
}
public BarObj(BarInt _barInt)
{
_barInt.method();
}
}
public class FooObj {
interface FooInt
{
public void method();
}
public FooObj(FooInt _fooInt)
{
_fooInt.method();
}
}
你不能
但是要解决您的问题,您可以下一步进行。
implements BarObj.BarInt, FooObj.FooInt
method
方法 trigger
方式 它应该看起来像这样
void trigger()
{
new BarObj(new BarObj.BarInt(){
@Override
public void method() {
System.out.println("NOW I DO KNOW WHICH METHOD");
System.out.println("I'm bar");
}
});
new FooObj(new FooObj.FooInt(){
@Override
public void method() {
System.out.println("NOW I DO KNOW WHICH METHOD");
System.out.println("I'm foo");
}
});
}
它使用匿名类,您可以在Google上搜索更多详细信息。
在一个类中,不能有两个名称相同,参数类型和长度相同的方法。 当实现两个具有相同名称的方法的接口时,由于接口中的方法为空并且永远不会执行,因此您只需将实现仅赋予一个要为两个接口都实现的方法。 将执行的是已从接口重写的类方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.