基于C#的接口基礎(chǔ)教程之五(4)_.Net教程
推薦:基于C#的接口基礎(chǔ)教程之四 第四節(jié)、訪問接口 對接口成員的訪問 對接口方法的調(diào)用和采用索引指示器訪問的規(guī)則與類中的情況也是相同的。如果底層成員的命名與繼承而來的高層成員一致,那么底層成員將覆蓋同
但是,當(dāng)一個接口方法被映射到一個類中的虛擬方法,派生類就不可能覆蓋這個虛擬方法并且改變接口的實現(xiàn)函數(shù)。例如,把上面的聲明重新寫為
interface IControl {
void Paint( ) ;
}
class Control: IControl {
public virtual void Paint( ) {...}
}
class TextBox: Control {
public override void Paint( ) {...}
}
就會看到下面的結(jié)果:
Control c = new Control( ) ;
TextBox t = new TextBox( ) ;
IControl ic = c ;
IControl it = t ;
c.Paint( ) ; // 影響Control.Paint( );
t.Paint( ) ; // 影響TextBox.Paint( );
ic.Paint( ) ; // 影響Control.Paint( );
it.Paint( ) ; // 影響TextBox.Paint( );
由于顯式接口成員實現(xiàn)程序不能被聲明為虛擬的,就不可能覆蓋一個顯式接口成員實現(xiàn)程序。一個顯式接口成員實現(xiàn)程序調(diào)用另外一個方法是有效的,而另外的那個方法可以被聲明為虛擬的以便讓派生類可以覆蓋它。例如:
interface IControl {
void Paint( ) ;
}
class Control: IControl {
void IControl.Paint( ) { PaintControl( ); }
protected virtual void PaintControl( ) {...}
}
class TextBox: Control {
protected override void PaintControl( ) {...}
}
這里,從Control 繼承的類可以通過覆蓋方法PaintControl 來對IControl.Paint 的實現(xiàn)程序進行特殊化。
3、重新實現(xiàn)接口
我們已經(jīng)介紹過,派生類可以對基類中已經(jīng)定義的成員方法進行重載。類似的概念引入到類對接口的實現(xiàn)中來,叫做接口的重實現(xiàn)(re-implementation)。繼承了接口實現(xiàn)的類可以對接口進行重實現(xiàn)。這個接口要求是在類定義的基類列表中出現(xiàn)過的。對接口的重實現(xiàn)也必須嚴格地遵守首次實現(xiàn)接口的規(guī)則,派生的接口映射不會對為接口的重實現(xiàn)所建立的接口映射產(chǎn)生任何影響。
下面的代碼給出了接口重實現(xiàn)的例子:
interface IControl {
void Paint( ) ;
class Control: IControl
void IControl.Paint( ) {…}
class MyControl: Control, IControl
public void Paint( ) {}
}
實際上就是:Control把IControl.Paint映射到了Control.IControl.Paint上,但這并不影響在MyControl中的重實現(xiàn)。在MyControl中的重實現(xiàn)中,IControl.Paint被映射到MyControl.Paint 之上。
分享:基于C#的接口基礎(chǔ)教程之三 第三節(jié) 定義接口成員 接口可以包含一個和多個成員,這些成員可以是方法、屬性、索引指示器和事件,但不能是常量、域、操作符、構(gòu)造函數(shù)或析構(gòu)函數(shù),而且不能包含任何靜態(tài)成員。接口定
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進度條的實現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現(xiàn)分頁示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- asp.net文字轉(zhuǎn)成圖片
- asp.net中倒計時自動跳轉(zhuǎn)頁面的實現(xiàn)方法(使用javascript)
- ASP.NET程序設(shè)計的10大技巧
- c#自定義控件中事件的處理
- Asp.net 中將漢字轉(zhuǎn)換成拼音的方法
- VS2010、VS2008等項目的默認瀏覽器修改方法(圖文)
- ASP.NET筆記之 ListView 與 DropDownList的使用
- 基于.NET平臺的分層架構(gòu)實戰(zhàn)(二)需求分析與數(shù)據(jù)庫設(shè)計
- asp.net中使用repeater和PageDataSource搭配實現(xiàn)分頁代碼
- 揭秘ASP.NET常用的26個優(yōu)化性能方法
- 相關(guān)鏈接:
- 教程說明:
.Net教程-基于C#的接口基礎(chǔ)教程之五(4)
。