基于C#的接口基礎(chǔ)圖文說明教程之7
發(fā)表時(shí)間:2024-05-15 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]第七節(jié)、覆蓋虛接口 有時(shí)候我們需要表達(dá)一種抽象的東西,它是一些東西的概括,但我們又不能真正的看到它成為一個(gè)實(shí)體在我們眼前出現(xiàn),為此面向?qū)ο蟮木幊陶Z言便有了抽象類的概念。C#作為一個(gè)面向?qū)ο蟮恼Z言,必然也會(huì)引入抽象類這一概念。接口和抽象類使您可以創(chuàng)建組件交互的定義。通過接口,可以指定組件必須實(shí)現(xiàn)的...
第七節(jié)、覆蓋虛接口
有時(shí)候我們需要表達(dá)一種抽象的東西,它是一些東西的概括,但我們又不能真正的看到它成為一個(gè)實(shí)體在我們眼前出現(xiàn),為此面向?qū)ο蟮木幊陶Z言便有了抽象類的概念。C#作為一個(gè)面向?qū)ο蟮恼Z言,必然也會(huì)引入抽象類這一概念。接口和抽象類使您可以創(chuàng)建組件交互的定義。通過接口,可以指定組件必須實(shí)現(xiàn)的方法,但不實(shí)際指定如何實(shí)現(xiàn)方法。抽象類使您可以創(chuàng)建行為的定義,同時(shí)提供用于繼承類的一些公共實(shí)現(xiàn)。對于在組件中實(shí)現(xiàn)多態(tài)行為,接口和抽象類都是很有用的工具。
一個(gè)抽象類必須為類的基本類列表中列出的接口的所有成員提供實(shí)現(xiàn)程序。但是,一個(gè)抽象類被允許把接口方法映射到抽象方法中。例如
interface IMethods {
void F();
void G();
}
abstract class C: IMethods
{
public abstract void F();
public abstract void G();
}
這里, IMethods 的實(shí)現(xiàn)函數(shù)把F和G映射到抽象方法中,它們必須在從C派生的非抽象類中被覆蓋。
注意顯式接口成員實(shí)現(xiàn)函數(shù)不能是抽象的,但是顯式接口成員實(shí)現(xiàn)函數(shù)當(dāng)然可以調(diào)用抽象方法。例如
interface IMethods
{
void F();
void G();
}
abstract class C: IMethods
{
void IMethods.F() { FF(); }
void IMethods.G() { GG(); }
protected abstract void FF();
protected abstract void GG();
}
這里,從C派生的非抽象類要覆蓋FF 和 GG, 因此提供了IMethods的實(shí)際實(shí)現(xiàn)程序。