上一篇: C# 运算符重载
下一篇: C# 命名空间(Namespace)
C# 接口(Interface)
在本教程中,我们将学习C#接口的基本概念及其应用。
- 接口简介
- 定义接口
- 实现接口
- 显示实现接口
- 继承接口和接口组合
接口简介
接口是一种特殊的抽象类型,它定义了一组方法、属性和事件的签名,但不包含具体的实现。一个类或结构体可以实现一个或多个接口,以提供这些接口所需的功能。接口在面向对象编程中用于实现多态性、解耦和代码复用。
定义接口
使用关键字 interface
定义接口。接口成员默认为公共(public),不能使用任何访问修饰符,如 private
、protected
或
internal
。
public interface IDriveable { void Start(); void Stop(); void Accelerate(); void Brake(); }
实现接口
一个类或结构体可以通过在类声明后添加冒号(:)和接口名称来实现接口。实现接口时,需要为该接口的所有成员提供实现。
public class Car : IDriveable { public void Start() { Console.WriteLine("The car is starting."); } public void Stop() { Console.WriteLine("The car is stopping."); } public void Accelerate() { Console.WriteLine("The car is accelerating."); } public void Brake() { Console.WriteLine("The car is braking."); } }
接口可以用作引用类型,这样可以实现多态性。
IDriveable myCar = new Car(); myCar.Start(); // 输出 "The car is starting."
显示实现接口
有时候,一个类可能需要实现两个具有相同成员签名的接口。在这种情况下,可以使用显示实现接口来避免命名冲突和提供独立的实现。
public interface IFlyable { void Start(); } public class Drone : IDriveable, IFlyable { // 实现 IDriveable 接口 public void Start() { Console.WriteLine("Start driving mode."); } // 显示实现 IFlyable 接口 void IFlyable.Start() { Console.WriteLine("Start flying mode."); } }
要访问显示实现的接口成员,需要将对象显式转换为接口类型。
Drone myDrone = new Drone(); IDriveable driveableDrone = myDrone; IFlyable flyableDrone = myDrone; driveableDrone.Start(); // 输出 "Start driving mode." flyableDrone.Start(); // 输出 "Start flying mode."
继承接口和接口组合
接口之间可以通过继承实现组合。这可以让新接口包含一个或多个现有接口的成员。
public interface IMoveable { void Start(); void Stop(); } public interface IDriveable : IMoveable { void Accelerate(); void Brake(); }
类或结构体实现继承了其他接口的接口时,需要为所有接口提供实现。
public class Car : IDriveable { // 必须实现 IDriveable 和 IMoveable 的所有成员 }
这个教程简要介绍了C#接口的基本概念及其应用。通过学习和实践,您将更好地理解并掌握C#接口的使用方法。