C# 编程指南:接口(Interface)

在C#中,接口(Interface)是一种定义了一组相关方法、属性和事件的合同。它定义了一组行为,而不关心实现细节。

部分
1
接口的定义

使用 interface 关键字定义一个接口。

interface IShape
{
    double CalculateArea();
    void Display();
}
部分
2
接口的实现

类可以通过使用 : 符号实现一个或多个接口。

class Circle : IShape
{
    private double radius;

    public Circle(double radius)
    {
        this.radius = radius;
    }

    public double CalculateArea()
    {
        return Math.PI * radius * radius;
    }

    public void Display()
    {
        Console.WriteLine($"Circle with radius {radius}");
    }
}
部分
3
多接口实现

一个类可以实现多个接口,并提供每个接口定义的成员实现。

interface IPlayable
{
    void Play();
}

interface IRecordable
{
    void Record();
}

class Player : IPlayable, IRecordable
{
    public void Play()
    {
        Console.WriteLine("Playing...");
    }

    public void Record()
    {
        Console.WriteLine("Recording...");
    }
}
部分
4
显式接口实现

当一个类实现了多个接口,并且这些接口拥有相同的成员名称时,可以使用显式接口实现来解决命名冲突。

interface IFirstInterface
{
    void Display();
}

interface ISecondInterface
{
    void Display();
}

class MyClass : IFirstInterface, ISecondInterface
{
    void IFirstInterface.Display()
    {
        Console.WriteLine("Displaying from IFirstInterface");
    }

    void ISecondInterface.Display()
    {
        Console.WriteLine("Displaying from ISecondInterface");
    }
}
部分
5
接口的扩展

在C# 8.0及更高版本中,接口可以定义默认实现。

interface ILogger
{
    void Log(string message);

    // 默认实现
    void LogError(string errorMessage)
    {
        Log($"[Error] {errorMessage}");
    }
}

class ConsoleLogger : ILogger
{
    public void Log(string message)
    {
        Console.WriteLine($"[Info] {message}");
    }
}
    目录

  • 1.
    接口的定义
  • 2.
    接口的实现
  • 3.
    多接口实现
  • 4.
    显式接口实现
  • 5.
    接口的扩展