接口是指定一组函数成员而不实现它们的引用类型。所以只能类和结构来实现接口。对不同对象实现相同消息。
示例:
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();}
访问显式接口需要将本类转换成接口类型。