位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

C# 在類(lèi)中實(shí)現(xiàn)接口

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-07

實(shí)現(xiàn)接口的類(lèi)必須包含該接口所有成員的實(shí)現(xiàn)代碼,且必須匹配指定的簽名(包括匹配指定的get和set塊),并且必須是公共的。例如:

public interface IMylnterface 

{

    void DoSomething(); 

    void DoSomethingElse();

}

public class MyClass : IMylnterface 

{

    public void DoSomething() {} 

    public void DoSomethingElse () {}

}

可使用關(guān)鍵字virtual或abstract來(lái)實(shí)現(xiàn)接口成員,但不能使用static或const。還可在基類(lèi)上實(shí)現(xiàn)接口成員,例如:

public interface IMylnterface

{

    void DoSomething(); 

    void DoSomethingElse();

}

public class MyBaseClass

{

    public void DoSomething() {}

}

public class MyDerivedClass : MyBaseClass, IMylnterface

{

    public void DoSomethingElse() {}

}

繼承一個(gè)實(shí)現(xiàn)給定接口的基類(lèi),就意味著派生類(lèi)隱式地支持這個(gè)接口,例如:

public interface IMylnterface

{

    void DoSomething(); 

    void DoSomethingElse();

}

public class MyBaseClass : IMylnterface

{

    public virtual void DoSomething() {} 

    public virtual void DoSomethingElse() {}

}

public class MyDerivedClass : MyBaseClass

{

    public override void DoSomething() {}

}

顯然,在基類(lèi)中把實(shí)現(xiàn)代碼定義為虛擬非常有用,這樣派生類(lèi)就可以替換該實(shí)現(xiàn)代碼,而不是隱藏它們。如果要使用new關(guān)鍵字隱藏一個(gè)基類(lèi)成員,而不是重寫(xiě)它,則方法MyInterfkce.DoSomething()就總是引用基類(lèi)版本,即使通過(guò)這個(gè)接口來(lái)訪問(wèn)派生類(lèi),也是這樣。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部