C#接口
接口是指定一組函數成員而不實現它們的引用類型。所以只能類和結構來實現接口。對不同對象實現相同消息。
示例:
Interface Info{
string GetName();
string GetAge();}
class CA:Info{
public string name;
public string age;
public GetAge(){
return age;}
public GetName(){
return name;}}
public class CB:Info{
public string name;
public string age;
public GetAge(){
return age;}
public class Program{
static void printf(Info item){
item.GetName();
item.GetAge();}
public static void main(){
CA a=new CA();
CB b=new CB();
printf(a);
printf(b);}
}
IComparable接口示例:
數組排序Sort()依賴於一個Icomparable接口中的CompateTo函數,需要重寫,若為一個類的排序改寫則:
public class Myclass:Icomparable{
public int value;
public int CompareTo(object obj){
Myclass my=obj as Myclass;
if(this.value<my.value)//this小於返回-1
return -1;
if(this.value>my.value)//this大於返回1
return 1;
return 0;//相等返回0}
1.聲明接口
接口聲明不能包含數據成員和靜態成員,只能聲明非靜態的方法、屬性、事件、索引器。
interface IMyInterface
{
int test(int v);
}
接口聲明允許有修飾符,但接口成員不允許有修飾符。隱式public。
public interface I{
int test(int v);
private test(int v);//不允許}
2.實現接口
只有類和結構才能實現接口。
3.接口是引用類型
接口不僅僅是類或結構要實現的成員列表,它還是一個引用類型。
class my:Info{…}
my mc=new my();
Info if=(Info)mc;//也可以用as
4.實現具有重復成員的接口
如果一個類實現了多個接口,出現重復情況則只需要用單個成員來包含所重復的接口。
5.派生成員作為實現
interface Itfc{
void print();}
class mybase{
public void print(){Console.WreteLine(“Fc”);}
class derived:mybase,Itfc{}
class Program{
static void main(){
derived d=new derived();
d.printf();}}
雖然派生類沒有,則實現基類中與接口相同的函數。
6.顯式接口成員實現
當繼承多個接口的時候,對不同接口相同方法改寫
interface i1{void print();}
interface i2{void print();}
class test:i1,i2{
void i1.print();void i2.print();}
訪問顯式接口需要將本類轉換成接口類型。
C#接口