Home [C# 筆記] 宣告類別(Declaring Classes)
Post
Cancel

[C# 筆記] 宣告類別(Declaring Classes)

什麼是類別?

類別(Class)是用來描述某物件的結構,我們可以將Class視為某 Object 的藍圖,由一群具有相同資料結構與相同物件描述,所形成的集合。 (類別是定義物件的藍圖)

舉例:
若每個「跑車」都是一個物件,那麼什麼是這個物件的類別?
此問題的正解,當然是「汽車」囉,汽車就是跑車的類別。

我們對跑車的物件的了解,汽車的類別裡應該包含哪些東西呢?
汽車應該有:鋁圈、車門、馬力、最高時速等屬性,
也可能包含:供油方式、引擎技術等方法。

類別關係圖

汽車為例的類別關係圖

1
2
3
4
5
6
7
8
9
10
11
類別    車名
       屬性:鋁圈、車門、馬力、最高時速
       方法:供油方式、引擎技術、其他作用
------------------------------------------------
物件 -> 名貴跑車  法拉利360
                屬性:18吋鋁圈、雙門、400HP、極速295km/h
                方法:多點噴射、自然進氣、把妹泡妞

    -> 平民跑車  日蝕GST
                屬性:17吋鋁圈、雙門、205HP、極速220km/h
                方法:多點噴射、渦輪增壓、耍帥甩尾

由上得知,汽車是一個類別,他定義了類別本身含有哪些屬性和方法,根據汽車類別的定義,我們可以實作出「名貴跑車-法拉利360」和「平民跑車-日蝕GST」,這二台跑車是屬於汽車的實作,這二台拉風的跑車在自己的屬性與方法都有明確的定義。

類別的宣告

類別是定義物件的藍圖,那麼類別的語法應該如何宣告?

語法

1
2
3
4
[public | protected | internal | private] [static] class 類別名稱
{
    //定義方法與屬性
}
1
2
3
4
5
class TestClass
{
    // Methods, properties, fields, events, delegates
    // and nested classes go here.
}

範例

假設我們要宣告一個汽車的類別:

  • 屬性:鋁圈、車門、馬力、最高時速
  • 方法:供油方式、引擎技術

Car 類別的宣告

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Car
{
    public int AluminumWheel { get { return 18; } } //鋁圈
    public int CarDoor { get { return 2; } } //車門
    public int Horsepower { get { return 400; } } //馬力
    public int MaxSpeed { get { return 295; } } //極速

    //供油方式
    public string FuelSystem()
    {
        return "Multi-Port Fuel Injected"; //多當噴射
    }
    //引擎技術
    public string EngineTechnology(bool engineType)
    {
        return (engineType) ? "Natural Aspirate" : "Turbo"; //自然進氣/渦輪增壓
    }
}

物件的宣告

寫好一個類別Class之後,我們需要創建這個類別的物件,
創建這個類別的物件過程,稱之為類別的「實體化」。

1
2
3
4
5
6
//方法一:
Car car = new Car(); //有開空間,有佔內存

//方法二:
Car car; //沒有開空間,不佔內存
car = new Car(); //有開空間,有佔內存
  • 使用關鍵字new
  • this:表示當前這個類別的物件(Object)。
  • 類別Class是不佔內存的,而物件Object是佔內存的。

MSDN - 類別 (C# 參考) [C# 筆記] Class 類別 by R
Book: Visual C# 2005 建構資訊系統實戰經典教本

This post is licensed under CC BY 4.0 by the author.

[C# 筆記] 物件導向(Object-Oriented, OO)基本概念

[C# 筆記] 建立不需要實體化的靜態類別(static class)