2012-11-18 25 views
1

如何可以參考該方法定義被提供相同的方法的接口和我想限定在一類功能。 比如我有兩個接口如何i。從兩個差接口參照該方法

public interface i1 
{ 
    void show(); 

} 

public interface i2 
{ 
    void show(); 
} 

假設一個類ClassA的實現這些接口。他們將在概念上的衝突或者我應該如何界定呢..

回答

2

只有一種情況下,當衝突是可能的 - 當你必須用相同的簽名一類的幾種方法(方法的名稱和參數相同)。通常你可以重命名一種方法來解決這個衝突。但是當你實現接口時,你不能改變實現方法的簽名。如果有多個接口具有與方法相同的簽名,你需要的是方法不同的實現方式,然後使用explicit interfaces implementation解決衝突:

public class A : i1, i2 
{ 
    void i1.show() { ... } 
    void i2.show() { ... } 
} 

用法:

A a = new A(); 
i1 x = (i1)a; 
x.show(); // will call i1.show() implementation 

由於@ryadavilli說,你只需要明確的實施如果你需要不同接口的不同實現。否則一個show()方法將滿足這兩個接口。如果只有一種方法,那麼就沒有衝突。

BTW在C#中我們使用PascalCase進行方法命名。

+0

我可以從A類訪問的方法,如果顯示方法有不同的實現。那麼它是如何處理的? –

+0

@eraj看到使用示例 –

1

你能做到這一點

class A : i1, i2 
{ 
    void i1.show() 
    { 
     Console.WriteLine("1"); 
    } 

    void i2.show() 
    { 
     Console.WriteLine("2"); 
    } 
} 

如果你僅僅指剛希望有一個單一的實施都顯示()

class A : i1, i2 
{ 
    public void show() 
    { 
     Console.WriteLine("common method."); 
    } 
} 
相關問題