基于C#的接口基礎教程之五(3)
2007/1/9 20:55:35
2、繼承接口實現
接口具有不變性,但這并不意味著接口不再發展。類似于類的繼承性,接口也可以繼承和發展。
注意:接口繼承和類繼承不同,首先,類繼承不僅是說明繼承,而且也是實現繼承;而接口繼承只是說明繼承。也就是說,派生類可以繼承基類的方法實現,而派生的接口只繼承了父接口的成員方法說明,而沒有繼承父接口的實現,其次,C#中類繼承只允許單繼承,但是接口繼承允許多繼承,一個子接口可以有多個父接口。
接口可以從零或多個接口中繼承。從多個接口中繼承時,用":"后跟被繼承的接口名字,多個接口名之間用","分割。被繼承的接口應該是可以訪問得到的,比如從private 類型或internal 類型的接口中繼承就是不允許的。接口不允許直接或間接地從自身繼承。和類的繼承相似,接口的繼承也形成接口之間的層次結構。
請看下面的例子:
using System ;
interface IControl {
void Paint( ) ;
}
interface ITextBox: IControl {
void SetText(string text) ;
}
interface IListBox: IControl {
void SetItems(string[] items) ;
}
interface IComboBox: ITextBox, IListBox { }
對一個接口的繼承也就繼承了接口的所有成員,上面的例子中接口ITextBox和IListBox都從接口IControl中繼承,也就繼承了接口IControl的Paint方法。接口IComboBox從接口ITextBox和IListBox中繼承,因此它應該繼承了接口ITextBox的SetText方法和IListBox的SetItems方法,還有IControl的Paint方法。
一個類繼承了所有被它的基本類提供的接口實現程序。
不通過顯式的實現一個接口,一個派生類不能用任何方法改變它從它的基本類繼承的接口映射。例如,在聲明中
interface IControl {
void Paint( );
}
class Control: IControl {
public void Paint( ) {...}
}
class TextBox: Control {
new public void Paint( ) {...}
}
TextBox 中的方法Paint 隱藏了Control中的方法Paint ,但是沒有改變從Control.Paint 到IControl.Paint 的映射,而通過類實例和接口實例調用Paint將會有下面的影響
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( ) ; // 影響Control.Paint( ) ;
但是,當一個接口方法被映射到一個類中的虛擬方法,派生類就不可能覆蓋這個虛擬方法并且改變接口的實現函數。例如,把上面的聲明重新寫為
interface IControl {
void Paint( ) ;
}
class Control: IControl {
public virtual void Paint( ) {...}
}
class TextBox: Control {
public override void Paint( ) {...}
}
就會看到下面的結果:
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( );
由于顯式接口成員實現程序不能被聲明為虛擬的,就不可能覆蓋一個顯式接口成員實現程序。一個顯式接口成員實現程序調用另外一個方法是有效的,而另外的那個方法可以被聲明為虛擬的以便讓派生類可以覆蓋它。例如:
interface IControl {
void Paint( ) ;
}
class Control: IControl {
下一頁
返回列表
返回首頁
主站蜘蛛池模板:
日韩系列第一页|
美女扒开尿口让男人捅爽|
欧美日韩国产另类在线观看|
午夜精品一区二区三区在线视|
黄色小视频app下载|
国产精品自在在线午夜出白浆|
wwwjizzz|
成人看的午夜免费毛片|
久久大香伊蕉在人线观看热2|
欧美地区一二三区|
亚洲精品成人片在线播放|
精品一区二区三区四区在线|
国产aaa毛片|
香蕉高清免费永久在线视频|
国产激情一区二区三区四区|
84pao强力打造|
在线看免费毛片|
sao货水真多好浪好紧视频|
果冻传媒电影在线|
免费在线你懂的|
美女黄18以下禁止观看|
国产产一区二区三区久久毛片国语|
欧美18性精品|
国产精品久久久久久久久电影网
|
日韩欧美亚洲天堂|
免费av一区二区三区|
国产免费插插插|
国产精品久久香蕉免费播放|
91香蕉视频黄色|
在线观看视频日韩|
lisaannxxxxx|
好男人观看免费视频播放全集|
中国猛少妇色XXXXX|
无码人妻久久一区二区三区免费
|
国产成人综合美国十次|
wwwxxx国产|
国产精品怡红院在线观看|
91精品久久久久久久久网影视|
在线观看免费成人|
a级黄色毛片三|
天天躁日日躁狠狠躁性色AVQ
|