1. 程式人生 > 其它 >C# 介面(Interface)

C# 介面(Interface)

介面定義了所有類繼承介面時應遵循的語法合同。介面定義了語法合同 "是什麼" 部分,派生類定義了語法合同 "怎麼做" 部分。

介面定義了屬性、方法和事件,這些都是介面的成員。介面只包含了成員的宣告。成員的定義是派生類的責任。介面提供了派生類應遵循的標準結構。

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

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

介面本身並不實現任何功能,它只是和宣告實現該介面的物件訂立一個必須實現哪些行為的契約。

抽象類不能直接例項化,但允許派生出具體的,具有實際功能的類。


定義介面: 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.");
    }
}

InterfaceImplementer 類實現了 IMyInterface 介面,介面的實現與類的繼承語法格式類似:

class InterfaceImplementer : IMyInterface

繼承介面後,我們需要實現介面的方法 MethodToImplement() , 方法名必須與介面定義的方法名一致。


介面繼承: InterfaceInheritance.cs

以下例項定義了兩個介面 IMyInterface 和 IParentInterface。

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

以下例項 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.