[轉貼] InterFace - 介面、接口

2013061815:58
出處:http://jimmy0222.pixnet.net/blog/post/37050866

本文摘自"Introducing Visual C# 2010"(Adam Freeman, Apress, 2010)一書第12章關於介面的內容。

使用介面

介面含有一組用於方法和其它成員的說明。

當一個類別含有在一個介面中定義的所有成員的實現時,稱這個類別實現了一個介面。

在以下章節中,將演示如何定義、實現、及使用介面,並解釋它們與其它C#特性,如抽象類,有何不同。

何時使用介面和基類

基類允許你在派生類中生成共用的行為,當你希望所有類具有同樣的特性並與另一個類相關時,基類是很有用的。你可以在第6章看到相關的示例。

介面允許你跨越無共同先輩的類來生成共同的行為,意即,你可以上溯任何對象,這些對象實現了一個給定介面,並以同樣的代碼處理它們。

定義和使用一個簡單的介面

本節中,我們將考察一個簡單的介面,定義一個實現它的類,並演示如何使用這個類。

定義一個介面

清單12-1含有一個簡單的介面:

1
2
3
4
5
public interface IBasicCalculator
{
  int CalculateSum(int x, int y);
  int CalculateProduct(int x, int y);
}

清單12-1中的介面叫做IBasicCalculator。C#中介面命名的約定是遵循Pascal大小寫,並以字母I開頭。你可以在第4章看到一個完整的命名約定列表。

  

圖12-1描述了這個IBasicCalculator介面。

(註:Modifier —修飾符,Keyword —關鍵詞,Name —介面名,Member Specification —成員說明)

介面用Interface關鍵詞進行定義。你可以對介面運用標準的訪問修飾符,修飾符的操作和類的修飾符相同,詳見第6章的說明。介面最重要的部分是成員說明。清單12-1中,指定了兩個方法:CalculateSum和CalculateProduct。這些說明定義了以兩個int整數為參數並返回一個int結果的兩個方法。介面可以包含其它種類的成員,將在本章稍後涉及。

所有介面的成員說明都隱含為public(公用),意即,你不可以用訪問修飾符來限制對它的訪問。

實現一個介面,一旦已經定義了一個介面,你可以生成實現這個介面的類。

清單12-2含有一個類的示例,它實現了清單12-1所定義的介面。

1
2
3
4
5
class Calculator : IBasicCalculator
{
  public int CalculateSum(int x, int y) { return x + y; }
  public int CalculateProduct(int x, int y) { return x * y; }
}

實現一個介面就像從一個基類派生一樣。把一個冒號(:)放在類名之後,並加上你想實現的介面名。

你必須在你的類中提供這個介面中的每個 成員的實現。在這個例子中,為了實現這個IBasicClaculator介面,Calculator類必須提供CalculatorSum和 CalculateProduct成員的實現。你的類可以實現附加的成員,但必須至少要實現這個介面中的所有成員。在實現一個介面中所定義的方法時,你不需要用override關鍵詞。

使用一個介面,當一個類已經實現了一個介面時,從這個類生成的對象可以上溯到這個介面類型,如清單12-3所示。

1
2
3
4
5
6
7
8