介面可宣告屬性簽名(含存取子),實作類別需提供具體邏輯:
public interface IAttribute
{
string Name { get; set; }
}
public class Component : IAttribute
{
private string _name;
public string Name
{
get => _name;
set => _name = value ?? throw new ArgumentNullException(nameof(value));
}
}
介面屬性不包含欄位,只規範「可讀/可寫」契約。
承接上文,定義手勢常數並準備玩家類別:
public static class Options
{
public const string JianDao = "剪刀";
public const string ShiTou = "石頭";
public const string Bu = "布";
}
接著建立爺爺與孫子類別實作 IPlayer(詳見下一篇),由遊戲引擎協調對戰流程。
| 基底類別 | 介面 |
|---|---|
| 單一繼承限制 | 可多重實作 |
| 強制共享實作 | 純契約,零耦合 |
| 易造成脆弱基底類別 | 演進安全,不破壞實作者 |
在猜拳遊戲中,玩家可能同時是「人類」、「AI」、「遠端玩家」等多重角色,介面組合比繼承更靈活。