C# 快速導覽 - 實作多個介面

類別 (class) 可以實作多個介面 (interface) ,此時用分號間隔類別名稱即可。



舉例如下
interface InchDimension {
    float Length();
}

interface Dimension {
    float Length();
}

class Demo : InchDimension, Dimension {
    float length;

    public Demo(float len) {
        length = len;
    }

    public float Length() {
        return length;
    }

    float InchDimension.Length() {
        return length / 2.54f;
    }

    static void Main() {
        Demo d = new Demo(100.0f);
        System.Console.WriteLine("Length(cm): {0}", d.Length());
        
        InchDimension i = (InchDimension) d;
        System.Console.WriteLine("Length(in): {0}", i.Length());
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:interface3.cs
    功能:示範 C# 程式 
    作者:張凱慶
    時間:西元 2013 年 6 月 */


Demo 是用來記錄長度的類別, InchDimension 為英吋單位的介面, Dimension 則是我們一般常用的公分,兩者宣告相同名稱的 Length() 方法 (method)
class Demo : InchDimension, Dimension {


我們打算以 Dimension 為預設,因此直接實作即可
public float Length() {
    return length;
}


InchDimensionLength() 則要加上介面名稱
float InchDimension.Length() {
    return length / 2.54f;
}


由於 Dimension 為預設,因此可以直接存取,至於 InchDimension 則要轉換型態後才可使用 InchDimensionLength()
InchDimension i = (InchDimension) d;
System.Console.WriteLine("Length(in): {0}", i.Length());


編譯執行,結果如下



中英文術語對照
介面interface
類別class
方法method


您可以繼續參考
介面 interface
相關目錄
回 C# 快速導覽 回 C# 教材 回首頁
參考資料
Standard ECMA-334 C# Language Specification msdn: HOW TO:使用繼承明確實作介面成員 (C# 程式設計手冊)

沒有留言: