首頁  >  文章  >  後端開發  >  C#學習日記13---類別(Class)的聲明與定義

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

黄舟
黄舟原創
2017-01-20 13:51:401523瀏覽

 類作為面向對象的靈魂,在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);  
  
        }  
    }  
}

運行下:

C#學習日記13---類別(Class)的聲明與定義 看完上面寫的程式碼,發現 這與 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)的聲明與定義的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn