书名:C#接口示例 http://www.dingos.cn
http://www.dingos.cn 第 1 页
《C#接口基础》
第一章
介绍...................................................................................................................................1
第二章
示例分析 ...........................................................................................................................1
示例 1(P1.
CS
):..........................................................................................................................1
示例 2(P2.CS):..........................................................................................................................1
示例 3(P3.
CS
):..........................................................................................................................2
示例 4(P4.
CS
):..........................................................................................................................2
示例 5(P5.
CS
):..........................................................................................................................3
示例 6(P6.
CS
):..........................................................................................................................3
示例 7(P7.
CS
):..........................................................................................................................4
示例 8(P8.
CS
):..........................................................................................................................4
示例 9(P9.
CS
):..........................................................................................................................5
示例 10(P10.
CS
): ......................................................................................................................6
示例 11(P11.
CS
):.......................................................................................................................7
示例 12(P12.
CS
): ......................................................................................................................8
示例 13(P13.
CS
): ......................................................................................................................9
示例 14(P14.
CS
): .................................................................................................................... 10
示例 15(P15.CS): .................................................................................................................... 10
示例 16(P16.
CS
): .................................................................................................................... 11
示例 17(P17.
CS
): .................................................................................................................... 12
示例 18(P18.
CS
): .................................................................................................................... 13
示例 19(P19.
CS
): .................................................................................................................... 14
示例 20(P20.
CS
): .................................................................................................................... 15
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
书名:C#接口示例 http://www.dingos.cn
http://www.dingos.cn 第 1 页
第一章 介绍
C#中的接口提供了一种实现运行时的多态。通过接口可以使用相同接口的引用来访问
实现相同接口的不同类的方法,其实是使用虚方法通过相同的引用调用相同基础的不同的
类。在开始前先使用简单的短类例子来解释接口的概念,下面的简短的例子显示接口的特性。
第二章 示例分析
示例 1(P1.cs):
class Demo {
public static void Main() {
System.Console.WriteLine("Hello Interfaces");
}
}
interface abc {
}
输出:
Hello Interfaces
编译运行上面的程序运行程序并显示出期望的结果。这段程序包含一个 Demo 类程序入
门 Main()方法中打印“Hello Interfaces”。在上面的程序中还定义了接口 abc。abc
接口是空的,可以在接口中添加一些元素。
示例 2(P2.cs):
class Demo {
public static void Main() {
System.Console.WriteLine("Hello Interfaces");
}
}
interface abc {
int x;
}
输出:
P2.cs(11,3): error CS0525: Interfaces cannot contain fields
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
书名:C#接口示例 http://www.dingos.cn
http://www.dingos.cn 第 2 页
错误!在 C#的接口中不能包含字段例如变量。上面的程序在接口 abc 中声明了一个整
型变量 x。编译将会出错。
示例 3(P3.cs):
class Demo {
public static void Main() {
System.Console.WriteLine("Hello Interfaces");
}
}
interface abc {
void xyz() {
System.Console.WriteLine("In xyz");
}
}
输出:
P3.cs(11,8): error CS0531: 'abc.xyz()': interface members
cannot have a definition
这次在接口中定义了 xyz()方法 C#编译器发现了错误。这说明在接口中成员不能有定
义。也就意味着如果在接口 abc 中仅仅只有方法的声明编译器将认为正确?
示例 4(P4.cs):
class Demo {
public static void Main() {
System.Console.WriteLine("Hello Interfaces");
}
}
interface abc {
void xyz();
}
输出:
Hello Interfaces
上面的程序编译运行正常产生期望的输出结果。最后编译成功。在 C#的接口中仅仅包
含方法的定义。现在看看方法的作用。
接口是类实现的规范。也就是说接口规定了方法的原型并有类来实现接口所定义的方法
原型。
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.
书名:C#接口示例 http://www.dingos.cn
http://www.dingos.cn 第 3 页
因此在类 Demo 和接口 abc 结合在一起。
示例 5(P5.cs):
class Demo : abc {
public static void Main() {
System.Console.WriteLine("Hello Interfaces");
}
}
interface abc {
void xyz();
}
输出:
P4.cs(1,7): error CS0535: 'Demo' does not implement interface
member 'abc.xyz()'
P4.cs(11,8): (Location of symbol related to previous error)
在上面的代码中 Demo 和接口 abc 通过“demo : abc”联系在一起,通常对于这个结
合有一点小的误会。类 Demo 需要负责定义接口 abc 中定义的方法原型。因此在上面代码
中的 Demo 没有实现 abc 接口中定义的 xyz 的方法,上面的代码出错。为了修正问题,类
Demo 必须实现接口 abc 中定义的方法原型 xyz。看下面的程序代码。
示例 6(P6.cs):
public class Demo : abc {
public static void Main() {
System.Console.WriteLine("Hello Interfaces");
}
void xyz() {
System.Console.WriteLine("In xyz");
}
}
interface abc {
void xyz();
}
输出:
P6.cs(1,7): error CS0536: 'Demo' does not implement interface
Generated by Foxit PDF Creator © Foxit Software
http://www.foxitsoftware.com For evaluation only.