【公告】網站目前停止所有的課程訂閱服務,原有學員權益不受影響,造成不便還請見諒,我們正在打造更多課程以及圖書,包含 Python 為主的課程主題,未來將會合併且擴充目前的課程內容,提供全新課程訂閱服務,感謝學員的支持。

定義介面屬性

介面所能定義的成員也包括屬性,如同方法成員,屬性的定義只需提供識別名稱以及 get與 set 關鍵字,語法形式如下:

T IProperty
{
    get ;
    set ; 
}

除了不需實作內容,原理與一般類別相同,如果希望定義一個唯讀屬性,則不需使用 set關鍵字,唯寫則不需要 get 關鍵字。考慮以下的 IMessage 介面定義:

interface IMessage
{
    string SomeMessage
    {
        get;
        set;
    }
}

其中定義了名稱為 SomeMessage 的屬性,並且設定了 get以及 set 關鍵字,表示這個屬性同時允許讀寫。接下來的 ShowMessage 類別實作這個介面:

class ShowMessage : IMessage
{
    private string cMessage = "" ; 

    public ShowMessage(string pMessage)
    {
        this.cMessage = pMessage ; 
    }
    public string SomeMessage
    {
        get
        {
            return cMessage ; 
        }
        set
        {
            cMessage = value; 
        }
    }
}

其中的 SomeMessage 屬性,提供外部程式存取 private 欄位cMessage所需的功能。

於主程式測試實作介面屬性的效果:

class Program
{
    static void Main(string[] args)
    {
        ShowMessage showMessage = new ShowMessage("Hello, C# !");
        string message = showMessage.SomeMessage;
        Console.WriteLine(message);

        showMessage.SomeMessage = "Hello, .Net !";
        message = showMessage.SomeMessage;
        Console.WriteLine(message);
        Console.ReadLine();
    }
}

首先建立 ShowMessage 物件 showMessage,並且傳入一行訊息文字。

接下來引用屬性 SomeMessage 取得此屬性值,並且將其輸出。

第二段程式碼重新修改屬性值,然後再次引用message 取得修改後的屬性值將其輸出。

Hello, C# !
Hello, .Net !



沒有留言: