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