上一篇: C# 运算符重载

下一篇: C# 命名空间(Namespace)

C# 接口(Interface)

在本教程中,我们将学习C#接口的基本概念及其应用。

  1. 接口简介
  2. 定义接口
  3. 实现接口
  4. 显示实现接口
  5. 继承接口和接口组合

接口简介

接口是一种特殊的抽象类型,它定义了一组方法、属性和事件的签名,但不包含具体的实现。一个类或结构体可以实现一个或多个接口,以提供这些接口所需的功能。接口在面向对象编程中用于实现多态性、解耦和代码复用。

定义接口

使用关键字 interface定义接口。接口成员默认为公共(public),不能使用任何访问修饰符,如 privateprotectedinternal

                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#接口的使用方法。