【问题标题】:Return types and multiple inheritance?返回类型和多重继承?
【发布时间】:2012-04-05 06:27:50
【问题描述】:
interface i1{
int test();
}
interface i2{
String test();
}
class Test implements i1,i2{
<Return type> test(){
//code here
}
}
如果实现方法的返回类型为int,则错误提示返回类型与i2.test()不兼容
如果实现方法的返回类型为String,则错误提示返回类型与i1.test()不兼容
我应该如何在我的类中实现这两个接口Test
任何有用的帮助。
【问题讨论】:
标签:
java
interface
multiple-inheritance
【解决方案1】:
我应该如何在我的类Test中实现这两个接口
要么在两个不同的类中实现它们,要么重命名(或更改参数签名)其中一个接口方法。
【解决方案2】:
你不能。它们不相容。在这种情况下,只考虑方法名称和参数。
您的选择是:
- 更改其中一种方法的名称
- 使不同的参数列表包含不同的类型
【解决方案3】:
仅通过填写一些适当的返回类型是不可能解决这个问题的。
您必须找到替代解决方案;例如在其中一个接口中重命名test 方法。
【解决方案4】:
这永远不会奏效,您必须找到替代方法。即重命名方法,或者您可以提供内部类实现,如下所示
class Test {
static i1 i=new i1() {
@Override
public int test() {
return 0;
}
};
static i2 i22=new i2() {
@Override
public String test() {
return "String";
}
};
public static void main(String...strings ){
if(someObject instanceof String){
i.test();
} else {
i22.test();
}
}
}