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# 基礎到此大致完成,接下來開始討論軟體開發。

相關教學影片

上一篇 單元 12 - 物件導向程式設計
回 C# 入門指南首頁
下一篇 軟體開發篇
回 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. 使用命名空間組織程式碼有什麼優點?