C# 在類中實(shí)現(xiàn)接口
實(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è)接口來訪問派生類,也是這樣。
點(diǎn)擊加載更多評論>>