2012-03-20 78 views
1
interface i1{ 
    int test(); 
} 

interface i2{ 
    String test(); 
} 

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

如果實現的方法的返回類型爲INT,錯誤說返回類型與i2.test()不相容 如果實現的方法的返回類型爲字符串,錯誤說返回類型與不相容i1.test()返回類型和多繼承?

我應該如何落實在我班上的兩個接口測試

任何幫助APPR eciable。

+0

見http://stackoverflow.com/questions/2598009/method -name-collision-in-interface-implementation-java – nos 2012-03-20 18:27:56

回答

8

你不能。它們不兼容。在這種情況下只考慮方法名稱和參數。

你的選擇是:

  1. 變化的方法之一的名稱
  2. 讓不同的參數列表包含不同類型
1

我應該如何實現這兩個接口在我的課測試

要麼實現它們在兩個不同的類,或重命名(或更改參數簽名)的接口方法之一。

+0

是不是可以通過任何方式在一個類中實現? – 2012-03-20 18:27:19

+0

@Chandra Sekhar:沒有。 – 2012-03-20 21:03:01

0

這是不可能通過只填寫解決這個一些適當的返回類型。

你必須找到一個替代解決方案;例如在其中一個接口中重命名test方法。

0

這將永遠不會奏效,你必須找到一個alternative.ie重命名方法或U可以提供內部類實現如下

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



} 



}