C#學習日記13---類(Class)的聲明與定義

來源:互聯網
上載者:User
類作為物件導向的靈魂,在C#中有著相當廣泛和深入的應用,對類的深度掌握自然是我們學習C#重要的一個環節.有關類的意義上一篇 C#學習日記12---參考型別 中已經給出了,這裡就不再重複了.說到 類 就不得不說下與之息息相關的內容----對象.

類與對象:

類: 從具有相同屬性的事物當中抽象出來的概念,一般用來描述同類個體的集合。

對象: 從類當中具體化的一個個體。(比如人類就是一個類, 張三 就是人類中的一個對象)

屬性:用來描述對象特徵的。 (在類裡面,是類的資料成員^_^)

方法: 說明對象具有的能力。 (在類裡面,是類的資料成員^_^,在C/C++中它叫函數,以後要改口啦)

事件: 具有觸發能力的函數.

(與方法不同的是,事件是被動,由外部事物發出,受動者是對象; 而方法是由對象主動發出的動作,是類的資料成員)

類的定義:

類的定義是以關鍵字 class 開始,後跟類的名稱。類的主體,包含在一對花括弧內。

存取修飾詞 class  類名   {        存取修飾詞資料成員;   }

舉個例子:

 public class Student      {            private string name;            private int age;     }

訪問類裡面的資料成員方式與 Struct類型 一樣,您要使用(.)點運算子(連結了對象的名稱和成員的名稱),對於存取修飾詞,這裡對 private、public、internal 稍微說一下(以後我會細說噠):

private: 私人訪問。只限於本類成員訪問,子類,執行個體(對象)都不能訪問 (換句話說供類自身調用)。

public: 公有訪問。不受任何限制,所有類都可訪問。

internal: 同一個程式集中的所有類均可訪問,可以想象成Public 的其中一個程式集集合。

如果沒有指定存取修飾詞,相關的存取權限就會使用預設許可權,類的預設許可權是 internal, 成員的預設許可權是private; 所以當我們以後出現了有關存取權限問題的時候,記得看看是不是沒指定存取修飾詞或者使用不適當。

建立對象:

也可以說是對類進行對象執行個體化,需要採用 new 語句。拿上面定義好的類舉例子 Student stu = new Student(); 此時會調用Student類當中的 構造方法(函數,通俗的理解為初始化函數吧,以後在說建構函式與解構函式),如果沒有預設將資料成員賦值為0;

下面就寫個列子:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;    namespace Test  {   //定義的一個類,類名叫People      public class People      {         //全部指定為公有成員          public string name;              public char sex;                  public uint age;            }        class Program      {                   static void Main(string[] args)          {              People person = new People();        //執行個體化一個類,對象名叫 person              Console.WriteLine("輸入姓名: ");              person.name = Console.ReadLine();   //  全部輕鬆訪問,沒有壓力               Console.WriteLine("請輸入性別:");              person.sex = Console.ReadKey().KeyChar;    //char 類型轉換              Console.WriteLine("\n請輸入年齡:");              person.age = uint.Parse(Console.ReadLine());   //強制類型轉換              Console.WriteLine("您的姓名是:{0}\t您的性別是:{1}\t您的年齡是:{2}",person.name,person.sex,person.age);            }      }  }

運行下:

看完上面寫的代碼,發現 這與 Struct類型 除了名字不同外有何區別?? 在上面的程式中確實沒有區別(所有成員都是Public),看下面這個:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;    namespace Test  {   //定義的一個類,類名叫People      public class People      {         //全部指定私人成員          private string name;              private char sex;                  private uint age;            //定義public 方法作用是輸入與輸出          public void input()          {              Console.WriteLine("輸入姓名: ");              name = Console.ReadLine();                 Console.WriteLine("請輸入性別:");              sex = Console.ReadKey().KeyChar;    //char 類型轉換              Console.WriteLine("\n請輸入年齡:");              age = uint.Parse(Console.ReadLine());   //強制類型轉換                    }          public void output()          {              Console.WriteLine("您的姓名是:{0}\t您的性別是:{1}\t您的年齡是:{2}",name, sex,age);                    }            }        class Program      {                   static void Main(string[] args)          {              People person = new People();        //執行個體化一個類,對象名叫 person                person.input();         //通過調用 public 方法訪問privat 成員並賦值                person.output();    //此時無法使用直接使用 Console.WriteLine(person.name)輸出,存取權限不夠            }      }  }

運行過於上面一模一樣,在class類中我們可以定義方法,(上面的input與output是兩個方法)而在Struct 結構體中不能定義方法,而且我們將People類中的屬性指定為private 私人成員,外界對象person無法直接存取,只能通過People中指定的Public方法訪問。舉個例子吧: 當我倆打電話的時候,我倆並沒有面對面的交流,而是通過 手機 這個媒介相互交換資訊,此時 手機就可以看作你的一個public方法,你就是一個類中私人成員,我就是這個類執行個體化的一個對象。

以上就是C#學習日記13---類(Class)的聲明與定義的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.