这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战
接口概念
C#提供了多种进行规模化程序设计会用到的技术,如接口、程序集、命名空间等,本篇文章介绍下接口。
接口是类和类之间的协议,使用接口可以使得实现接口的类或结构在形式上保持一致, 使程序更加清晰和条理化,具有很好的扩展性,并可以方便实现类与类之间的统一管理,是组件技术的重要支撑。
接口把所有的方法和属性都掏空了,接口内部只有声明没有实现代码。
接口的声明语法如下:
[修饰符] interface 接口名
{
//接口体
}
代码示例:
public interface ITest
{
void Show();
}
接口声明
接口就是一组类或结构的一种实现形式约定。
声明接口时,需要遵守下面的规则:
- 接口声明不能包括数据成员;
- 接口声明只能包括成员类型为方法、属性、事件和索引的非静态成员函数的声明;
- 接口的函数成员声明不能包括任何实现代码,每个函数成员声明的主体后必须使用分号;
- 按照惯例,接口的名称必须从大写的I开始;
- 与类和结构相似,接口声明可以分割成分部接口声明;
- 接口声明可以使用所有的访问修饰符public、protected、internal和private;
- 接口的成员是隐式public的,不允许有任何访问修饰符。
C#虽然不支持类的多继承,但是C#支持接口的多继承,代码实现如下:
public interface ITest
{
void Show();
}
public interface ITest_A
{
}
public interface ITest_B: ITest, ITest_A
{
}
接口实现
只有类和结构可以实现接口。要实现接口,类或结构必须在基类列表中包括接口名称,并且必须为每一个接口成员提供实现。
实现接口时必须实现所有接口成员,否则就会出现编译错误:
代码示例:
public interface ITest
{
void Show();
}
class Test : ITest
{
public void Show()
{
Console.WriteLine("---");
}
}
补充说明:
-
如果类从基类继承并实现接口,则基类列表中基类名称必须放在任何接口之前。
-
C#支持一个类或结构实现多个接口,所有实现的接口必须在基类列表中用逗号分隔。
如果一个类实现了多个接口,并且其中一些接口有相同签名和返回类型的成员,则类可以实现单个成员来满足所有包含重复成员的接口,也可以通过显式实现方式分别实现每个接口的成员