iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0
自我挑戰組

初心者學C#系列 第 22

Day 22:C#中的類別(上)(ಠ益ಠ)

※以下內容皆是新手撰寫,內容可能不完全正確

寫報告寫到一臉生無可戀… classes的東西稍多,拆成兩部分記錄。

今天的筆記內容又是個C#中很重要的東西 – 類別(classes) 。之前幾篇幾乎都有用到,卻未詳細解釋其特性跟用法。類別像是資料類型的藍圖,定義物件內有什麼東西、能做什麼運算。物件是類別的實例(instance)。構成類別的方法和變數亦稱作 類別成員(class members)

定義一個類別用的是 class關鍵字(class keyword) ,前綴一個存取規格符。存取規格符定義的是類別和類別成員的 存取規則(access rules) ,若是沒有特別定義的話,類別的預設存取規格符是internal、類別成員的預設存取規格符是private。

接著就類似前面定義其他東西,類別名稱和一對 大括號(curly braces) (有學妹問我什麼是curly braces,就順便補充一下)。括號裡面的是類別成員,資料類型代表變數的資料類型、傳回類型指的是可能傳回的類型(聽起來像廢話,但也有可能沒有傳回東西)。從類別外頭使用其類別成員,用英文句點(.)隔開。

拿之前第六篇寫的CubeApplication舉例,再看一遍(絕對不是我懶),解釋以上class中的各個部分:

using System;
namespace CubeApplication
{
    class Cube
    {
        int height; //定義方塊的長寬高
        int width;
        int length;
        public void numbers()
        {
            height = 5; //給值
            width = 5;
            length = 5;
        }
        public int value()
        { return height * length * width; }
        public void calc()
        {
            Console.WriteLine("Height: {0}", height); 
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Volume: {0}", value());
        }
        }
    class calcube
    {
        static void Main(string[] args)
        {
            Cube c = new Cube(); //宣告Cube類型的某c
            c.numbers(); //使用各種類別成員
            c.calc();
            Console.ReadLine();

        }
    }
    }

這串東西的結果:

Height: 5
Width: 5
Length: 5
Volume: 125

成員函數及封裝(member functions & encapsulation)
成員函數跟類別中其他變數很像,在其類別內定義,同時可以用於本身所在類別內其他物件。成員變數則可以當作物件的屬性,存取規格是private(達到封裝),必須用public的成員函數使用。

例:public void length1(int len){ length = len; }

今天先到這兒,下一篇講C#的建構器、破壞器和C#中的靜態成員~

參考資料:
(a) Tutorialspoint; C# - Classes
https://www.tutorialspoint.com/csharp/csharp_classes.htm


上一篇
Day 21: C#的列舉類型 ☆*゚ ゜゚*(´∀`)*゚ ゜゚*☆
下一篇
Day 23:C#的類別(下)(ಠヮಠ)
系列文
初心者學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
iT邦新手 5 級 ‧ 2020-01-31 11:49:26

我覺得你一系列的文章都講得淺白易懂XD 而且都好有趣~

我要留言

立即登入留言