首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

深入理解 C# 介面:特性、限制與實作範例

     編輯:關於C#

介面在 C# 中扮演著定義契約的關鍵角色。本文整理介面的核心特性、與類別的差異,並提供完整的程式碼範例說明定義與實作方式。

介面的四大核心特性

  1. 無法實例化:介面是「虛擬」的抽象定義,不能直接建立實例。這也是介面不包含欄位(成員變數)的原因。
  2. 僅能宣告,不可實作:介面內的索引子、屬性、事件、方法僅能有宣告,具體實作由衍生介面或實作類別負責。
  3. 具備範本性質:當類別或介面繼承某介面時,自動擁有該介面定義的所有特徵(索引子、屬性、方法、事件等)。
  4. 支援多重繼承:C# 類別僅支援單一繼承,但介面可多重繼承,實際上代表一種「能力承載」的契約。

介面定義範例

interface ISampleInterface1
{
    // 索引子
    string this[int index] { get; set; }

    // 事件
    event EventHandler SampleEvent;

    // 方法
    void Find(int value);

    // 屬性
    string Point { get; set; }
}

上述介面定義了一個索引子、一個事件、一個方法與一個屬性。

介面繼承與實作範例

public interface ISampleInterface : ISampleInterface1
{
    // 注意:介面中不能定義欄位與實作
    // private int a = 1; // 編譯錯誤
    
    // 方法宣告(無實作區塊)
    void Find(int value);
    
    // 事件宣告
    event EventHandler SampleEvent;
    
    // 方法宣告
    void OnEvent();
}

實作介面的類別範例

public class SampleClass : ISampleInterface
{
    private int _counter = 0;

    // 實作索引子
    public string this[int index]
    {
        get => $"Index: {index}";
        set => _counter = index;
    }

    // 實作事件
    public event EventHandler SampleEvent;

    // 實作方法
    public void Find(int value)
    {
        _counter += value;
    }

    public void OnEvent()
    {
        SampleEvent?.Invoke(this, EventArgs.Empty);
    }

    // 實作屬性
    public string Point { get; set; }
}

關鍵提醒

  • 介面成員預設為 public,不可加上存取修飾詞
  • 介面不可包含建構函式、解構函式、欄位
  • 明確實作介面成員時需加上介面名稱前綴(如 ISampleInterface.Find())
  • C# 8.0+ 支援介面預設實作,但建議謹慎使用以保持契約純粹性

掌握介面設計精髓,能讓您建立鬆耦合、高擴充性的系統架構,是 C# 物件導向程式設計的核心功力之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved