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

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

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

實(shí)現(xiàn)接口的類必須包含該接口所有成員的實(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來實(shí)現(xiàn)接口成員,但不能使用static或const。還可在基類上實(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)給定接口的基類,就意味著派生類隱式地支持這個(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() {}

}

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

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

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