69pao国产精品视频-久久精品一区二区二三区-精品国产精品亚洲一本大道-99国产综合一区久久

C# 接口 Interface

c# 接口 interface

接口定義了所有類(lèi)繼承接口時(shí)應(yīng)遵循的語(yǔ)法合同。接口定義了語(yǔ)法合同 "是什么" 部分,派生類(lèi)定義了語(yǔ)法合同 "怎么做" 部分。

接口定義了屬性、方法和事件,這些都是接口的成員。接口只包含了成員的聲明。成員的定義是派生類(lèi)的責(zé)任。接口提供了派生類(lèi)應(yīng)遵循的標(biāo)準(zhǔn)結(jié)構(gòu)。

接口使得實(shí)現(xiàn)接口的類(lèi)或結(jié)構(gòu)在形式上保持一致。

抽象類(lèi)在某種程度上與接口類(lèi)似,但是,它們大多只是用在當(dāng)只有少數(shù)方法由基類(lèi)聲明由派生類(lèi)實(shí)現(xiàn)時(shí)。

接口本身并不實(shí)現(xiàn)任何功能,它只是和聲明實(shí)現(xiàn)該接口的對(duì)象訂立一個(gè)必須實(shí)現(xiàn)哪些行為的契約。

抽象類(lèi)不能直接范例化,但允許派生出具體的,具有實(shí)際功能的類(lèi)。

 

1. 定義接口: myinterface.cs

接口使用 interface 關(guān)鍵字聲明,它與類(lèi)的聲明類(lèi)似。接口聲明默認(rèn)是 public 的。下面是一個(gè)接口聲明的范例:

interface imyinterface
{
? ? void methodtoimplement();
}

以上代碼定義了接口 imyinterface。通常接口命令以 i 字母開(kāi)頭,這個(gè)接口只有一個(gè)方法 methodtoimplement(),沒(méi)有參數(shù)和返回值,當(dāng)然我們可以按照需求設(shè)置參數(shù)和返回值。

值得注意的是,該方法并沒(méi)有具體的實(shí)現(xiàn)。

接下來(lái)我們來(lái)實(shí)現(xiàn)以上接口: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 類(lèi)實(shí)現(xiàn)了 imyinterface 接口,接口的實(shí)現(xiàn)與類(lèi)的繼承語(yǔ)法格式類(lèi)似:

class interfaceimplementer : imyinterface

繼承接口后,我們需要實(shí)現(xiàn)接口的方法 methodtoimplement() , 方法名必須與接口定義的方法名一致。

 

2. 接口繼承: interfaceinheritance.cs

以下范例定義了兩個(gè)接口 imyinterface 和 iparentinterface。

如果一個(gè)接口繼承其他接口,那么實(shí)現(xiàn)類(lèi)或結(jié)構(gòu)就需要實(shí)現(xiàn)所有接口的成員。

以下范例 imyinterface 繼承了 iparentinterface 接口,因此接口實(shí)現(xiàn)類(lèi)必須實(shí)現(xiàn) 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.");
? ? }
}

范例輸出結(jié)果為:

methodtoimplement() called.
parentinterfacemethod() called.

下一節(jié):c# 命名空間 namespace

c# 教程

相關(guān)文章