天天看點

面向對象——類

類:存儲資料一種結構體,是面向對象程式設計的基礎。

  定義類的格式:[通路修飾符]  [類的屬性] 關鍵字(class) 類的名字(首寫字母必須大寫)如:public class DemoStudent{}

備注:類是建立對象的模闆,隻有有了類之後,才可以建立對象。

建立對象的格式:

類名 對象名字 = 關鍵字(new)類名([參數]);

建立對象的過程:通過調用類的執行個體(對象)構造函數,來建立對象。

構造函數可分為2類:類構造函數和執行個體構造函數。

類構造函數:負責在記憶體建構類,又稱為靜态構造函數,如果類在記憶體中不銷毀的(也就是說沒有被回收掉),隻調用一次。

格式:靜态(static) 類名(){//語句}

執行個體構造函數:類似一個方法,但是沒有傳回類型。每建立對象,就調用該函數。

具體格式:通路修飾符 類的名字([參數清單]){},一個類裡面可以多個構造函數。

如果一類中沒有顯式定義一個構造函數,那麼在編譯的時候,編譯器就會給該類建立一個沒有參數并且通路修飾符是public的構造函數:public 類名(){},但是一旦給類定義了一個構造函數的話,哪麼編譯器就不會給該類添加任何的構造函數。

類中可以存放索引器、方法、屬性、字段

三個主要的性質:封裝性,繼承性,多态性。

封裝性:把類的實作細節隐藏起來,對其他類來說,隻關心方法的調用,而不必關注具體的實作。System.Console.WriteLine(),對于這個方法來說,我們隻知道調用該方法,就可以向控制台輸出一句話,而方法的内部實作我們不必關心,這就是類的封裝性。

由于類的封裝性,不允許通路類的私有字段:定義屬性,索引器都有3個類型,對于08來說,要會定義自動化屬性。

定義屬性的格式:

public 資料類型 屬性名字

{

  get//獲得私有字段所儲存的值

  {

 return //私有字段

}

set//給私有字段賦一個新的值

  私有字段 = value;

備注:屬性的資料類型必須和通過屬性所封裝的私有字段的資料類型完全一樣。

對于屬性來說可以分為3類:如果隻有get我們把屬性稱之為隻讀屬性;如果隻有set我們把屬性稱之為隻寫屬性;如果既有get又有set我們把屬性稱之為可讀可寫屬性;

怎樣通路類的屬性:在其他類中,通過建立封裝屬性的類的執行個體(對象),通過該對象可以對屬性的操作。這樣可以實作對類私有字段的間接操作(一方面擷取字段所儲存的值,另一方面給私有字段賦一個新的值)例:

   public class Student

   {

       private  string name;

       public string Name

       {

           get { Console.WriteLine("調用Get方法");

           return name;

           }

           set

           {

               Console.WriteLine("調用Set方法");

               name = value;

       }

輸出結果:

          調用Set方法

          調用Get方法

          aa

   }

   class Program

       static void Main(string[] args)

           Student s = new Student();

           s.Name = "aa";

           Console.WriteLine(s.Name);

如果類中的屬性是對象的,則應該在get中聲明對象,因為通路此屬性是從get開始通路的。

例:

 private IList<LTEAResultBandWidth> resultBandWidth;

       public IList<ResultBandWidth> ResultBandWidth

           get

               if (resultBandWidth == null)

               {

                   resultBandWidth = new List<LTEAResultBandWidth>();

               }

               return resultBandWidth;

           set { resultBandWidth = value; }

}

繼續閱讀