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

C# 介面進階:繼承、特性與回呼模式實戰

     編輯:關於C語言

介面繼承:多介面組合

介面可繼承一或多個基底介面,形成契約層級的組合:

interface IA { }
interface IB : IA { }
interface IC : IA, IB { }
interface ID : IA, IB, IC { }

實作 ID 的類別必須同時滿足 IA、IB、IC、ID 的所有成員。

介面的核心特性

  • 成員隱含 public,不可加存取修飾詞
  • 可包含:方法、屬性、索引子、事件
  • 不可包含:欄位、常數、建構函式、解構函式、靜態成員(C# 8.0 前)
  • 為參考型別,不可實例化
  • 類別可實作多個介面,但只能繼承單一類別

介面 vs 抽象類別

相同點不同點
不可實例化介面無實作細節;抽象類別可有實作
含未實作成員介面所有成員皆為契約;抽象類別可混合
衍生類必須實作介面支援多實作;類別單一繼承

回呼模式與介面

介面是實作「回呼」的標準方式:將具體行為封裝於實作介面的物件,由控制器在特定時機呼叫。

範例:運動遊戲回呼


// 1. 定義回呼契約
public interface IPlayer
{
    void Play();
}

// 2. 具體回呼實作
public class PlayBasketball : IPlayer
{
    public void Play() => Console.WriteLine("玩籃球");
}
public class PlayFootball : IPlayer
{
    public void Play() => Console.WriteLine("玩足球");
}

// 3. 控制器:持有介面參考,決定何時觸發
public class Resolve
{
    private readonly IPlayer _player;
    public Resolve(IPlayer player) => _player = player;
    public void Play() => _player.Play();
}

// 4. 使用
var resolve = new Resolve(new PlayBasketball());
resolve.Play(); // 輸出:玩籃球

resolve = new Resolve(new PlayFootball());
resolve.Play(); // 輸出:玩足球

優點

  • 控制器與具體行為解耦,易於擴充新玩法
  • 符合依賴倒置原則:高層模組依賴抽象(介面)
  • 支援執行時動態切換行為
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved