C# 介面 Interface(學習心得 22)

介面定義了所有類繼承介面時應遵循的語法合約。

介面定義了語法合約 “是什麼” 部分,派生類定義了語法合約 “怎麼做” 部分。

介面定義了屬性、方法和事件,這些都是介面的成員。

介面只包含了成員的聲明。

成員的定義是派生類的責任。

介面提供了派生類應遵循的標準結構。

介面使得實現介面的類或結構在形式上保持一致。

抽象類在某種程度上與介面類似,但是,它們大多只是用在當只有少數方法由基類聲明由派生類實現時。

一、定義介面: MyInterface.cs

使用 interface 關鍵字聲明,它與類的聲明類似。

介面聲明默認是 public 的。

例:

interface IMyInterface
{
    void MethodToImplement();
}

以上程式碼定義了介面 IMyInterface。

通常介面命令以 I 字母開頭。

這個介面只有一個方法 MethodToImplement(),沒有參數和返回值,當然我們可以按照需求設置參數和返回值。

值得注意的是,該方法並沒有具體的實現。

二、介面實現:InterfaceImplementer.cs

例:

using System;

interface IMyInterface
{
        // 介面成員
    void MethodToImplement();
}

class InterfaceImplementer : IMyInterface // 繼承介面
{
    static void Main()
    {
        InterfaceImplementer iImp = new InterfaceImplementer(); // 類的實例化
        iImp.MethodToImplement(); // 類的方法調用
    }

    public void MethodToImplement() // 介面方法的具體實現
    {
        Console.WriteLine("MethodToImplement() called.");
    }
}

運行結果:

MethodToImplement() called.

三、介面繼承: InterfaceInheritance.cs

如果一個介面繼承其他介面,那麼實現類或結構就需要實現所有介面的成員。

例:IMyInterface 繼承了 IParentInterface 介面,因此介面實現類必須實現 MethodToImplement() 和 ParentInterfaceMethod() 方法

using System;

interface IParentInterface
{
    void ParentInterfaceMethod();
}

interface IMyInterface : IParentInterface // 介面繼承介面
{
    void MethodToImplement();
}

class InterfaceImplementer : IMyInterface // 類實現介面
{
    static void Main()
    {
        InterfaceImplementer iImp = new InterfaceImplementer(); // 類實例化
        iImp.MethodToImplement(); // 調用子類方法
        iImp.ParentInterfaceMethod(); // 調用父類方法
    }

    public void MethodToImplement() // 需要實現子類介面方法
    {
        Console.WriteLine("MethodToImplement() called.");
    }

    public void ParentInterfaceMethod() // 需要實現父類介面方法
    {
        Console.WriteLine("ParentInterfaceMethod() called.");
    }
}

運行結果:

MethodToImplement() called.
ParentInterfaceMethod() called.
Tags: