C# 入門指南
單元 13 - 介面、命名空間與 using
~~學習進度表~~
介面 (interface) 用關鍵字 (keyword) interface 定義,命名空間 (namespace) 用關鍵字 namespace 定義
interface, namespace, using
類別 (class) 除了可以繼承 (inheritance) 之外,也可以實作介面,介面基本上是宣告成員 (member) ,但是不實作,例如
interface Shape
{
double GetPerimeter();
double GetArea();
}
以上介面 Shape 宣告了兩個方法 (method) , GetPerimeter() 用來計算周長, GetArea() 計算面積。
類別如果要實作介面,例如實作以上的 Shape ,跟繼承一樣在類別名稱後用冒號,加上介面名稱,例如
class Circle: Shape
介面像是一組規格,實作介面就是實作這組規格,實作相同介面的類別具有相同的規格。
這樣 Circle 就必須實作 Shape 中的 GetPerimeter() 與 GetArea() 。
以下寫成完整程式
using System;
namespace ClassDemo04
{
interface Shape
{
double GetPerimeter();
double GetArea();
}
class Circle: Shape
{
public double radius;
public Circle(double r)
{
radius = r;
}
public double GetPerimeter()
{
return 2 * radius * 3.14;
}
public double GetArea()
{
return 3.14 * radius * radius;
}
}
class Program
{
static void Main(string[] args)
{
Circle c = new Circle(10.0);
Console.WriteLine(c.GetPerimeter());
Console.WriteLine(c.GetArea());
}
}
}
//《程式語言教學誌》的範例程式
// http://kaiching.org/
// 專案:ClassDemo04
// 檔名:Program.cs
// 功能:示範 C# 的類別
// 作者:張凱慶
Circle 作為圓形的類別,因此周長與面積的計算都採取圓形的計算公式
public double GetPerimeter()
{
return 2 * radius * 3.14;
}
public double GetArea()
{
return 3.14 * radius * radius;
}
此例執行結果如下
C:\ClassDemo04> dotnet run |
62.8 |
314 |
C:\ClassDemo04> |
關鍵字 using 用來引入命名空間,基本上只要用 using 引入命名空間後,就可以使用該命名空間中的定義,例如有以下的命名空間 NewDemo
namespace NewDemo
{
class Demo
{
public int DemoField;
public Demo(int n)
{
DemoField = n;
}
}
}
把以上的檔案放在專案資料夾中,專案資料夾裡的其他程式檔案就可以用關鍵字 using 引入
using NewDemo;
這樣專案資料的其他程式檔案就可以使用 Demo 類別了。
C# 基礎到此大致完成,接下來開始討論軟體開發。
相關教學影片
中英文術語對照 | |
---|---|
類別 | class |
繼承 | inheritance |
介面 | interface |
關鍵字 | keyword |
成員 | member |
方法 | method |
命名空間 | namespace |
參考資料 | |
---|---|
1. C# 程式設計手冊 | Microsoft Docs - 介面 | |
2. C# 程式設計手冊 | Microsoft Docs - 命名空間 | |
3. C# 參考 | Microsoft Docs - using 陳述式 |
重點整理 |
---|
1. 介面利用關鍵字 interface 定義,宣告成員,但是不實作。 |
2. 命名空間是 C# 組織程式碼的方式,使用關鍵字 namespace 定義。 |
3. 關鍵字 using 用來引入命名空間,引入命名空間後,就可以使用該命名空間的定義。 |
問題與討論 |
---|
1. 介面跟類別有何不同?為什麼要額外實作介面? |
2. 使用命名空間組織程式碼有什麼優點? |