C#中繼承和多態


1.繼承的概念

繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用已存在的類的功能。

  為了提高軟件模塊的可復用性和可擴充性,以便提高軟件的開發效率,我們總是希望能夠利用前人或自己以前的開發成果,同時又希望在

自己的開發過程中能夠有足夠的靈活性,不拘泥於復用的模塊。C#這種完全面向對象的程序設計語言提供了兩個重要的特性--

繼承性inheritance 和多態性polymorphism。

  繼承是面向對象程序設計的主要特征之一,它可以讓您重用代碼,可以節省程序設計的時間。繼承就是在類之間建立一種相交關系,使得

新定義的派生類的實例可以繼承已有的基類的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起類的新層次。

  現實世界中的許多實體之間不是相互孤立的,它們往往具有共同的特征也存在內在的差別。人們可以采用層次結構來描述這些實體之間的

相似之處和不同之處。

C#中,如果一個類后面通過冒號又跟了另外一個類,那么我們就稱冒號前面的類

為子類,冒號后面的類為父類。這種書寫類的方式放映出來的關系就稱為類的繼承關系。

子類:派生類

父類:基類或者超類

4.滿足什么條件的類可以使用繼承??

解析:滿足is a關系的兩個類可以使用繼承。

案例:經理is a a 員工

     程序員  is a 員工

     學生 is  a Person

5.如果new一個子類對象,那么有如下執行流程

   01.先定位到子類對應構造函數,沒有執行子類的方法體

   02.轉向了父類的無參構造函數,執行父類構造方法體

   03.轉向了子類的方法體繼續執行。

點題的話:如果在子類構造中,沒有使用base顯示調用父類的構造,那么系統也會自動調用父類的無參構造

    01.base代表父類對象,如果base():調用父類的構造函數

    02.base代表的是方法調用,是不需要參數類型的

6.通過base調用父類構造函數注意點

解析:01.通過base調用父類構造函數只能書寫在子類的構造后

     02.通過base調用父類構造函數參數順序和父類的構造參數一致

 

7.注意:方式一:new Student("張靚穎",20);

 

和方式二:new Student

 

{

 

   Name="張靚穎"Age=20

 

}區別?

 

解析:最終都能實現對類中的屬性賦值。

 

但是賦值的原理不同,

 

方式一:直接調用該類的帶參構造賦值。

 

  01.先通過無參構造創建出類的對象

 

  02.對象名.屬性名的方式賦值

 

8.訪問修飾符

 

  public:在任何位置都可以訪問,甚至是跨程序集都可以訪問。

 

  private:只能當前類的花括號中訪問。

 

  protected:只能在當前類,當前類的子類,子類的子類(孫子類)中可以訪問。

 

 

 

 

7.注意:方式一:new Student("張靚穎",20);

和方式二:new Student

{

   Name="張靚穎"Age=20

}區別?

解析:最終都能實現對類中的屬性賦值。

但是賦值的原理不同,

方式一:直接調用該類的帶參構造賦值。

  01.先通過無參構造創建出類的對象

  02.對象名.屬性名的方式賦值

8.訪問修飾符

  public:在任何位置都可以訪問,甚至是跨程序集都可以訪問。

  private:只能當前類的花括號中訪問。

  protected:只能在當前類,當前類的子類,子類的子類(孫子類)中可以訪問。

 

 

9.繼承的傳遞性

如果一個類B繼承自類A,而類C又繼承類B,那么類C也可以訪問到類A中非私有成員

10.繼承的單根性 C#不支持多繼承 Java也不支持多繼承)

在很久很久以前,有一個叫C++的家伙,他是支持多繼承的語言,突然有一天,10個程序員用多繼承,有9個都用錯了,后續的JavaC#語言因此不再支持多繼承。

C#中,一個類只能有一個父類C#Java都不支持多繼承。要想使用多繼承,那么請您使用接口。。

11.遍歷窗體上所有的控件,判斷是不是文本框

foreach(Control c in this.Controls)

{

    if(c is TextBox)

{

  ((TextBox)c).Text="";

}

}

is a 判斷一個對象是否是某個類型。

12.繼承的價值

01.模擬現實世界的關系

02.便於重用和擴展已徹底測試的代碼,且無需修改

03.結構更清晰

13.多態

    不同的對象對於同一個操作,做出的響應不同,那么這種情況在面向對象編程中就稱為多態

使用多態的目的?

解析:使用多態就是為了統一調用

 

14.實現多態三種方式:

方式一:通過虛方法實現多態

實現多態的步驟

   01.在父類中通過virtual關鍵字定義一個虛方法

   02.在子類中通過override關鍵字對父類中的虛方法進行重寫

   03.調用的時候,調用的是子類的方法

  目前為止,我們學兩種:

   第一種:虛方法實現多態

通過在普通類Person中用Virtual關鍵字定義虛方法SayHello(),然后在子類Student中通過override關鍵字對父類的SayHello()方法進行重寫。

如下:

 

Student

 

Teacher

 

Main方法中調用

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM