此代碼編譯沒有錯誤多態性,摘要和接口
class program
{
interface IA
{
void getName(string s);
}
interface IB
{
void getName(string s);
}
interface IC
{
void getName(string s);
}
public abstract class AC
{
public abstract void getName(string s);
}
public class CA : AC , IA, IB, IC
{
public override void getName(string s)
{
Console.WriteLine(s);
}
}
static void Main()
{
CA ca = new CA();
Console.ReadLine();
}
}
哪getName
方法執行?如果我們有一個具有相同方法名稱的多個接口,那麼僅僅實現一個滿足所有接口的方法就足夠了嗎?如果他們做了不同的事情呢?請注意,我沒有指定有哪些getName
(不同於此處的解決方案explicit naming)。
謝謝大家。
該實現將用於滿足所有三個接口中的功能。 –
@TrippKinetics謝謝。如果我刪除'override',那麼編譯器抱怨抽象方法中的'getName'沒有被執行。所以它似乎是單向的。 – Zuzlx
@Zuzlx在接口中聲明的成員和在抽象類中聲明的成員是不同的。爲了滿足一個接口,你必須實現一個方法,以滿足抽象類,你必須重寫一個方法。因爲你必須明確說*我的方法覆蓋另一個*你必須使用'override'修飾符。 – MarcinJuraszek