2014-04-06 69 views
1

是否有可能強制在類中的幾個方法簽名?類中幾個方法的強制簽名

比方說,我有Interface MyInterface的:

public interface MyInterface 
{ 
    public void method(int a); 
} 

我想實現MyInterfaceClassMyInterface的方式,在每個MyInterfaceClass方法得到了相同的簽名?

public class MyInterfaceClass implements MyInterface 
{ 
    public void method_A(int a) { /*something */ } 
    public void method_B(int a) { /*something */ } 
    public void method_C(int a, int b) { /*something */ } // ERROR cause of signature, won't compile 
} 

我在MyInterfaceClass中有數量未知的方法。

+0

所以你想有一個類,其中每個方法的簽名與其實現的接口中的單個方法的簽名相同?聽起來像是一份反思我的工作...... – Azar

+0

如果唯一的區別是參數的長度,你可能會考慮一個可變參數參數。 – csmckelvey

+0

您需要編譯錯誤?聽起來像你需要在「編譯器」區域玩耍。 –

回答

1

我不能確切地告訴你在這裏之後?在Java中,方法的簽名是由6個因子起來:

  1. 隱私級別(公共,私有,等...)
  2. 返回類型
  3. 方法名(帽大小寫)
  4. 參數(類型和位置,method_a(INT一個,字符串b)!= method_a(字符串b,INT A))
  5. 檢查例外列表

如果你想實現方法的接口,你米ust符合所有這些標準,包括名稱。此外,在一個類中,你只能實現一個接口的方法ONCE。如果你嘗試使用相同的參數,名稱,隱私級別等實現一個方法...兩次,那麼你的類將不會編譯。如果你在同一個類中實現了兩次,java虛擬機如何知道調用哪個方法?

爲什麼你想在一個類中實現兩次相同的方法?也許你正在試圖改進你的設計,但是你問的是錯誤的問題?

+0

我想創建一個類,它的方法遵循規則:它們具有相同的隱私級別,相同的返回類型,相同的參數,相同的已檢查的例外列表。它們之間唯一不同的是名稱...... – hudac

+1

你可以完全實現具有這些相似性的多種方法。但是,如果你想實現一個方法沒有接口,那麼你必須有相同的參數,異常,返回類型(等)和相同的名稱作爲接口方法。 –

0

在上面的代碼示例中,MyInterfaceClass不會編譯的唯一原因是您沒有定義方法(int a)。與method_C無關。

當你採用一個接口時,你必須實現接口中的每個方法(除非你創建了一個抽象類)。