一、定义接口 在 C# 语言中,类之间的继承关系仅支持单重继承,而接口是为了实现多重继承关系设计 的。 一个类能同时实现多个接口,还能在实现接口的同时再继承其他类,并且接口之间也可以继 承。 接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派 生类定义了语法合同 "怎么做" 部分。 接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定 义是派生类的责任。接口提供了派生类应遵循的标准结构。 多重继承的概念: 多重继承指的是一个类可以同时继承多个类。(多重继承在C++中支持,在C#和Java中不 支持) 接口定义的语法形式如下: 1 interface 接口名称 2 { 3 接口成员; 4 } 其中: 1) 接口名称 通常是以 I 开头,再加上其他的单词构成。例如创建一个计算的接口,可以命名为 ICompute。 2) 接口成员 接口中定义的成员与类中定义的成员类似。 接口中定义的成员必须满足以下要求。 接口中的成员不允许使用 public、private、protected、internal 访问修饰符。 接口中的成员不允许使用 static、virtual、abstract、sealed 修饰符。 在接口中不能定义字段。 在接口中定义的方法不能包含方法体。 举例如下: 定义一个接口IWorker,其中包含一个动作叫DoWork; 1 interface IWorker 2 { 3 void DoWork(); 4 } 二、接口的实现 1、接口的实现 接口的实现是通过继承的方式进行实现。 接口实现需要注意的地方: 接口继承接口之后具有父接口的全部成员。 类继承接口之后需要实现接口的全部成员方法。否则需要将该类定义为抽象类, 未实现的接口方法定义为抽象方法。 继承时基类和接口之间,接口和接口之间以逗号分隔 2、实现接口方式 接口的实现分为两种:显式实现接口和隐式实现接口 1)显式实现接口 显式实现接口需要使用接口名作为方法名的前缀。 注意事项: a.显式实现接口时不需要指定访问修饰符。 b.显式实现的接口在调用时必须使用接口对象。 比如修改学生类显式实现接口: 1 //Student类继承于Person类和IWorker接口 2 class Student:Person,IWorker 3 { 4 // 省略 5 6 //实现从接口继承的方法 7 void IWorker.DoWork() 8 { 9 Console.WriteLine("在学习"); 10 } 11 } 1 Student stu = new Student(); 2 //stu.DoWork(); 无法调用 3 4 IWorker worker = new Student(); 5 worker.DoWork(); 2)隐式实现接口 隐式实现接口不需要使用接口名作为方法名的前缀,但需要添加访问修饰符public。 3)总结 当类实现一个接口时,通常使用隐式接口实现,这样可以方便的访问接口方法和 类自身具有的方法和属性。 当类实现多个接口时,并且接口中包含相同的方法签名,此时使用显式接口实 现。 隐式接口实现,类和接口都可访问接口中方法。显式接口实现,只能通过接口访 问。 三、接口中多态的实现 多态能使用类之间的继承关系来实现,通过多个类继承同一个接口,并实现接口中的成员也 能完成多态的表示。 使用接口实现多态 需要满足以下两个条件。 定义接口并使用类实现了接口中的成员。 创建接口的实例指向不同的实现类对象。