返回类型和多重继承?

时间:2012-03-20 18:24:12

标签: java interface multiple-inheritance

interface i1{
    int test();
}

interface i2{
    String test();
}

class Test implements i1,i2{
    <Return type> test(){
         //code here
    }
}

如果实施方法的返回类型为 int ,则错误显示返回类型与i2.test()不兼容 如果实现方法的返回类型为字符串,则错误显示返回类型与i1.test()不兼容

我应该如何在班级测试

中实现这两个界面

任何帮助都很明显。

4 个答案:

答案 0 :(得分:8)

你做不到。他们是不相容的。在这种情况下,只考虑方法名称和参数。

您的选择是:

  1. 更改其中一种方法的名称
  2. 使参数列表包含不同的类型

答案 1 :(得分:1)

  

我应该如何在我的类Test

中实现这两个接口

在两个不同的类中实现它们,或者重命名(或更改参数签名)其中一个接口方法。

答案 2 :(得分:0)

只能通过填写一些适当的返回类型来解决这个问题。

你必须找到另一种解决方案;例如,在其中一个接口中重命名test方法。

答案 3 :(得分:0)

这将永远不会有效,你必须找到一个替代.i.e重命名方法或你可以提供内部类实现如下

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();
    }



}



}