1.C#.Net面向對象基礎知識點

  1.繼續面向對象程序員

  面向對象的三大特徵:ide

  封裝、繼承、多態函數

  封裝:隱蔽代碼實現,代碼複用,修改方便。this

  繼承:指針

  多態:對象

  2.什麼是類?什麼是對象?類和對象的區別?繼承

  類是一種數據類型,用戶自定義的數據類型。 是針對具體存在的一種描述。內存

  類的組成:字段,屬性,方法,構造函數。開發

  對象是具體的。是類的具體實例。對象具備屬性和方法。 按照類的描述來建立一個可供咱們使用的實例。get

  類只佔一塊內存,每一個對象單獨佔用一塊內存。 對象能夠叫作類的實例(Instance)

  3.構造函數的做用?

  主要是爲了方便程序員在實例化(new)對象的時候就爲對象裏的一些屬性字段初始化賦值。

  <--構造函數-->

  (1)訪問修飾符通常狀況下是public

  (2)沒有返回值類型

  (3)方法名和類名相同

  (4)在該類被new的時候(實例化)調用

  (5)用戶自定義的類中,若是沒有用戶定義的任何一個構造函數。那麼CLR將在程序運行的時候自動添加一個無參的構造函數給對象

  也就是說:一旦用戶自定義的類中包含了一個或多個構造函數(無論有沒有參數的),那麼CLR將不在自動添加。

  4.屬性

  屬性的本質就是兩個方法,get和set。

  屬性就是爲了設置訪問和修改爲員變量值的規則。

  若是屬性裏只定義了get代碼塊,則該屬性叫作只讀屬性。

  若是屬性裏只定義了set代碼塊。則該屬性叫作只寫屬性。

  代碼:

  public class Person

  {

  private string _name;

  public string Name

  {

  get{return _name;}

  set{_name=value;}

  }

  private int _age;//屬性存在的目的就是爲了設置訪問和修改爲員變量值的規則。

  public int Age

  {

  get{return _age;}

  set

  {

  if(value>=0&& value<=120)

  {

  _age=value;

  }

  else

  {

  _age=18;

  }

  }

  }

  }

  5.GC垃圾回收器

  垃圾回收器定時檢查堆內存,一旦發現沒有被引用的對象,就當即銷燬它。

  6.靜態成員

  CLR加載程序集裏的類信息,發現有靜態成員,則直接添加到[靜態成員表]中,整個程序集內均可以訪問這個表裏的靜態成員。

  7.里氏替換原則

  當存在繼承關係時,若是聲明的是父類,則堆中對象保存的類型指針爲父類,那麼調用的時候就會執行父類的成員。

  若是調用的成員,父類中沒有,那麼程序會報錯。由於父類的類型指針只會去找父類的成員,找不到,沒有,就會報錯。

  8.繼承

  (1)、由於子類繼承了父類,因此子類對象可以調用父類對象裏全部的非私有成員。

  (2)、當存在繼承關係的時候,子類的this同時能夠指向父類的非私有成員。base就存在於子類對象裏,用來指向父類的指針。

  (3)、繼承的單根性:一個類只能繼承一個父類。

  傳遞性:子類得到父類全部的非私有成員。

  (4)、子類默認調用父類無參的構造函數

  (5)、類的訪問修飾符默認就是internal,(程序集內共享,也就是項目內部共享)

  類的成員變量,訪問修飾符默認是private

  (6)、不能將父類對象強制轉換成子類對象

  (7)、當建立一個子類對象的時候,若是聲明的是父類對象,那麼只能調用父類中的方法。

  當建立一個子類對象的時候,若是聲明的是子類對象,那麼先看子類中的方法,有則調用,沒有則去父類中尋找,若是有則調用。

  9.簡單工廠方法

  最關鍵的是應用了里氏替換原則,及子類重寫父類的技術,它能讓代碼開發者不關心某個具體相關業務的實現,而只關心本身要實現的業務代碼的編號。

  10.多態

  多態就是用某個子類來實例化父類,調用父類的抽象方法或者虛方法,但實際上執行的是子類實例重寫的方法。

相關文章
相關標籤/搜索