接口具有不變性
注意
接口可以從零或多個接口中繼承
請看下面的例子
using System ;
interface IControl
{
void Paint( ) ;
}
interface ITextBox: IControl
{
void SetText(string text) ;
}
interface IListBox: IControl
{
void SetItems(string[] items) ;
}
interface IComboBox: ITextBox
對一個接口的繼承也就繼承了接口的所有成員
一個類繼承了所有被它的基本類提供的接口實現程序
不通過顯式的實現一個接口
interface IControl
{
void Paint( );
}
class Control: IControl
{
public void Paint( ) {
}
class TextBox: Control
{
new public void Paint( ) {
}
TextBox 中的方法Paint 隱藏了Control中的方法Paint
Control c = new Control( ) ;
TextBox t = new TextBox( ) ;
IControl ic = c ;
IControl it = t ;
c
t
ic
it
但是
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
t
ic
it
由於顯式接口成員實現程序不能被聲明為虛擬的
interface IControl
{
void Paint( ) ;
}
class Control: IControl
{
void IControl
protected virtual void PaintControl( ) {
}
class TextBox: Control
{
protected override void PaintControl( ) {
}
這裡
我們已經介紹過
下面的代碼給出了接口重實現的例子
interface IControl
{
void Paint( ) ;
class Control: IControl
void IControl
class MyControl: Control
public void Paint( ) {}
}
實際上就是
在接口的重實現時
using System ;
interface IMethods
{
void F( ) ;
void G( ) ;
void H( ) ;
void I( ) ;
}
class Base: IMethods
{
void IMethods
void IMethods
public void H( ) { }
public void I( ) { }
}
class Derived: Base
{
public void F( ) { }
void IMethods
}
這裡
using System ;
interface IBase
{
void F( ) ;
}
interface IDerived: IBase
{
void G( ) ;
}
class C: IDerived
{
void IBase
{
//對F 進行實現的代碼…
}
void IDerived
{
//對G 進行實現的代碼…
}
}
class D: C
{
public void F( )
{
//對F 進行實現的代碼…
}
public void G( )
{
//對G 進行實現的代碼…
}
}
這裡
From:http://tw.wingwit.com/Article/program/net/201311/15680.html