C# 入門指南- 單元10 - 類別 - 程式語言教學誌
文章推薦指數: 80 %
類別最基本的就是定義欄位(field) 以及方法(method) ,例如 class Demo { public string M; public string DoSomething(string s) { return s; } public void PrintM() ...
C#入門指南
單元10-類別
~~學習進度表~~
C#中用關鍵字(keyword)class定義類別(class)
class
類別最基本的就是定義欄位(field)以及方法(method),例如
classDemo
{
publicstringM;
publicstringDoSomething(strings)
{
returns;
}
publicvoidPrintM()
{
Console.WriteLine(m);
}
}
欄位為物件特定的值,例如賽車遊戲的車輛物件有顏色、樣式、速度等等,方法為物件去做的特定工作,例如車輛物件要啟動、加速、轉彎等等。
關鍵字class後面空一格所接的識別字為類別名稱
classDemo
此例的類別名稱為Demo,底下大括弧縮排的第一行為宣告欄位
publicstringM;
「欄位」的英文原文為field,field比較多用在資料庫中資料表的地方,實際上這個詞field在物件導向程式設計中通常會翻成「屬性」,然而「屬性」在C#官方文件中指的是property,關於「屬性」在下一個單元才會詳加介紹,這裡依照微軟提供的C#官方文件的用詞「欄位」,因為實際在微軟提供的.NET環境寫C#程式,所有的中文提示訊息都是採用微軟提供的機器翻譯。
類別Demo只宣告了一個欄位,底下定義兩個方法,首先是DoSomething()
publicstringDoSomething(strings)
{
returns;
}
關鍵字public是最大的開放權限,這裡將DoSomething()宣告為public,才能其他類別的Main()方法中呼叫DoSomething(),然後string是指DoSomething()的回傳值型態(returntype),小括弧裡頭放參數列,參數列(parameterlist)是以逗號間隔的型態名稱與參數(parameter)名稱,像是
型態1參數1,型態2參數2,型態3參數3,...
這裡DoSomething()只有一個string型態的參數s。
參數的原文為parameter,這是定義方法的時候用的詞,另外有一個詞----引數,引數的原文為argument,在呼叫方法時實際提供的值稱為argument,但是其實parameter跟argument是同一個概念,本書均採用「參數」做說明。
DoSomething()裡頭只有一行,這一行是return陳述(statement)
returns;
return用來回傳數值,回傳的數值就是return之後的運算式,此例直接回傳參數s。
如果方法不需要回傳值(returnvalue),就要將方法宣告為void,像是第二個方法就宣告成void
publicvoidPrintM()
{
Console.WriteLine(m);
}
PrintM()就是印出欄位M的值。
我們將以上Demo的定義放進ClassDemo01的命名空間(namespace)中,然後在Program類別寫Main()方法來建立Demo型態的物件,完整程式如下
usingSystem;
namespaceClassDemo01
{
classDemo
{
publicstringm;
publicstringDoSomething(strings)
{
returns;
}
publicvoidPrintM()
{
Console.WriteLine(m);
}
}
classProgram
{
staticvoidMain(string[]args)
{
Demod=newDemo();
d.m="Thereisnospoon.";
strings=d.DoSomething("Freeyourmind.");
Console.WriteLine(s);
d.PrintM();
}
}
}
//《程式語言教學誌》的範例程式
//http://kaiching.org/
//專案:ClassDemo01
//檔名:Program.cs
//功能:示範C#的類別
//作者:張凱慶
Main()預設的參數為字串陣列的args
staticvoidMain(string[]args)
{
Demod=newDemo();
d.m="Thereisnospoon.";
strings=d.DoSomething("Freeyourmind.");
Console.WriteLine(s);
d.PrintM();
}
Main()沒有回傳值,因此宣告為void,然後void之前還有個static關鍵字,這個關鍵字是個修飾詞,static就中文而言是靜態的意思,在程式裡頭是指可以直接透過類別名稱呼叫,因此呼叫
Program.Main()
就會執行這個程式,這也是C#程式的執行方式,C#可執行程式的執行程式碼就會寫在Main()方法中。
下面先建立變數d為Demo()型態的物件,注意變數d為參考(reference)
Demod=newDemo();
然後用d加上小數點,將欄位M設定為"Thereisnospoon."
d.m="Thereisnospoon.";
接下來呼叫DoSomething(),以"Freeyourmind.",然後以變數s接收回傳值
strings=d.DoSomething("Freeyourmind.");
下一行再印出s的值
Console.WriteLine(s);
最後,d再呼叫PrintM()方法
d.PrintM();
此例執行結果如下
C:\ClassDemo01>dotnetrun
Freeyourmind.
Thereisnospoon.
C:\ClassDemo01>
以上介紹了類別設計的最基本的兩個項目,也就是欄位及方法,下一個單元繼續討論建構子(constructor)與屬性(property)。
相關教學影片
第五堂課導覽⇨YouTube頁面連結
類別⇨YouTube頁面連結
第五堂課舉一反三⇨YouTube頁面連結
上一頁單元9-列舉與結構
回C#入門指南首頁
下一頁單元11-建構子與屬性
回C#教材首頁
回程式語言教材首頁
中英文術語對照
類別class
建構子constructor
欄位field
關鍵字keyword
方法method
命名空間namespace
參數parameter
參數列parameterlist
屬性property
參考reference
回傳值型態returntype
回傳值returnvalue
陳述statement
參考資料
1.C#語言教學課程|MicrosoftDocs-類別與物件
2.C#程式設計手冊|MicrosoftDocs-類別
重點整理
1.類別用關鍵字class定義,裡面可以定義欄位及方法,欄位為物件特定的值,方法為物件去做的特定工作。
2.C#中的欄位原文為field,另有屬性,原文為peoperty。
3.方法有參數列,參數為提供給方法計算的值,方法也可以有回傳值,回傳值就是回傳計算結果。
4.可執行的C#類別要定義static的Main()方法,這個方法可由驅動器直接呼叫。
5.利用類別定義的變數為參考。
問題與討論
1.為什麼類別要有欄位跟方法?想一想,這跟物件的意涵有什麼關聯?
2.為什麼方法有參數列?回傳值的目的是什麼?
3.欄位跟屬性有何不同?為什麼有了欄位又要有屬性?
練習
1.建立一個專案Exercise1001,裡頭設計一個類別IntegerDemo,IntegerDemo有一個int的欄位result,另有一個沒有回傳值的方法add(),add()有一個int參數,呼叫add()時會把參數與result相加,結果儲存在result,執行部分先將result設定為25,再呼叫add()以24當參數。
2.承上題,另建立一個專案Exercise1002,改成由使用者輸入兩個整數。
3.承上題,另建立一個專案Exercise1003,加入方法subtract(),subtract()沒有回傳值另外需要一個int參數,同樣呼叫subtract()是將value減去參數值,最後結果儲存在result。
4.承上題,另建立一個專案Exercise1004,繼續擴充IntegerDemo,加入乘法的方法。
5.承上題,另建立一個專案Exercise1005,繼續擴充IntegerDemo,加入除法的方法。
6.建立一個專案Exercise1006,仿照IntegerDemo,將方法改成計算階層值,結果儲存在result。
7.寫一個程式Exercise1007,仿照IntegerDemo,將成員函數改成計算費氏數列,結果儲存在result。
延伸文章資訊
- 1C# 入門指南- 單元10 - 類別 - 程式語言教學誌
類別最基本的就是定義欄位(field) 以及方法(method) ,例如 class Demo { public string M; public string DoSomething(stri...
- 2C# 類別物件的宣告與使用 - 程式語言教學- 痞客邦
則該類別變數的宣告式,就是:. 類別名稱 類別物件名稱 = new 類別名稱(參數一之值, 參數二之值…); ※ 若程式設計者沒有設定類別建構式,則C#會預設 ...
- 3類別
了解類別類型和其建立方式. ... 本文內容. 參考型別; 宣告類別; 建立物件; 類別繼承; 範例; C# 語言規格. 參考型別. 定義為的 class 類型是 class 別 ...
- 4DAY 10 類別 - iT 邦幫忙::一起幫忙解決難題,拯救IT 人的一天
「類別」是C# 最基本的型別。 類別是以單一單位結合狀態(欄位) 和動作(方法及其他函式成員) 的資料結構。 類別可以為動態建立的類別「執行個體」(稱為「物件」) 提供 ...
- 5[C#][Visual Studio] 類別與物件(class and object)
前面幾個章節,我們逐一介紹C# 程式語言基礎內容,在這一個章節將要介紹類別(class)。對於當時是初學者的我來說,雖然會建構與使用類別,但如何正確 ...