【问题标题】: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】:

你不能。它们不相容。在这种情况下,只考虑方法名称和参数。

您的选择是:

  1. 更改其中一种方法的名称
  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();
          }
      
      
      
      }
      
      
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-21
        • 2017-10-21
        • 1970-01-01
        相关资源
        最近更新 更多