C#接口基础

来源:互联网 发布:日本经济数据怎么找 编辑:程序博客网 时间:2024/05/20 21:46

接口:定义了一组签名方法。它是只是一套标准或规范,规定了实现该接口的类型必须包含哪些成员。

1、定义接口

C# 接口定义关键字 :interface,下面定义了一个书籍信息查询接口:

public interface IQueryBookInfo 

{

string GetBookName(string name);

double GetBookPrice(string name);

string GetBookIntroduction(string name);

}

接口定义的注意事项:

(1) 接口中不能定义任何构造器方法。

(2) 接口中不能定义任何实例字段。

(3) 接口可以在文件中定义,也可以在其他类型中定义。

(4) 接口可以“继承” 接口。

(5) 接口可以有任何的可访问性修饰,如public、protected等。

另外,CLR允许在接口中定义静态成员,如:静态方法、静态字段、静态属性等。但C#禁止在接口中定义任何静态成员。

2、接口的实现和调用

(1)在C#中规定,实现接口的所有方法的可访问性修饰必须是public,否则编译不通过。

(2)在CLR中规定,所有的接口方法必须是virtual,当定义接口时,没有指定方法为virtual时,编译器会默认的为该方法添加修饰virtual和sealed,这就意味着派生类将不能重写这个方法(但派生类可以通过实现该接口的方式,来重新实现这一方法——需要使用new关键字);当定义接口时,为方法指定了virtual时,派生类可以重写该方法。

(3)在CLR中允许定义类型为接口的变量、参数和字段。

(4)在使用接口变量时,可以将实现了该接口的实例对象,赋值给接口变量;同时允许变量从一种接口类型转化为另一种接口类型,前提条件是该实例对象都实现了这两个接口。例如:String类型同时实现了Icompareble和 IEnumberable,则String的实例可赋值给这两个接口变量、并且赋值后的这两个接口变量直接可以相互转化:

String str = “yanjia”;

Icompareble compareble = str;

IEnumberable enumberable = (IEnumberable) compareble。

(5)接口方法的调用:当在对象上调用一个接口方法时,实际上调用的是该对象的类型中的方法。


0 0
原创粉丝点击