25 C#類的繼承

 

繼承是面向對象編程的一個重要特性。任何類均可以從另外一個類中繼承,這就是說,這個類擁有它繼承的類的全部成員。在OOP 中,被繼承的類稱爲父類(也稱爲基類)。注意,C#中的對象僅能直接派生於一個基類,固然基類也能夠有本身的基類。編程

類的繼承一個重要做用是子類可重用父類的代碼。這樣就能夠在一個地方集中維護一份代碼,避免了不少的重複的代碼。好比咱們已經有一個Car類。在這個Car中有兩個最基本的方法啓動發動機和中止發動機 (1)startEngine();(2)StopEngine();微信

class Car
    {
        public int StartEngine()
        {
            //啓動發動機的代碼
            return 0;
        }

        public int StopEngine()
        {
            //中止發動機的代碼
            return 0;
        }
    }

 

這時候咱們的系統須要有兩個新類,ModelACar和ModelBCar。它們都須要一樣的啓動發動機和中止發動機功能。除此以外,每一個類還都有本身特殊的功能。若是沒有繼承,咱們怎麼辦呢?很簡單啊,把Car類中的這兩個方法copy過來就能夠了。學習

class ModelACar
    {
        public int StartEngine()
        {
            //啓動發動機的代碼
            return 0;
        }

        public int StopEngine()
        {
            //中止發動機的代碼
            return 0;
        }

        public void ModelAFucntion1()
        {

        }

        public void ModelAFucntion2()
        {

        }

    }

    class ModelBCar
    {
        public int StartEngine()
        {
            //啓動發動機的代碼
            return 0;
        }

        public int StopEngine()
        {
            //中止發動機的代碼
            return 0;
        }

        public void ModelBFucntion1()
        {

        }

        public void ModelBFucntion2()
        {

        }
    }

 

如今問題就來了,若是有十種新的類都須要Car類中一樣的啓動和中止發動機的方法,那你怎麼辦?在十個類中都copy一樣的代碼嗎?能夠。可是很煩啊。尤爲是之後修改維護的時候,更煩。少改了一個地方,就會出問題。因此繼承就是來幫咱們解決這樣的問題。咱們只須要新的類繼承Car類就能夠了。新的類自動就有了Car類的所有方法。spa

繼承的語法和簡單。code

class 子類的名字 : 父類的名字

{

}

使用繼承後,ModelACar和ModelBCar的代碼變成這樣了。對象

class ModelACar : Car
    {
        
        public void ModelAFucntion1()
        {

        }

        public void ModelAFucntion2()
        {

        }

    }

    class ModelBCar : Car
    {
       
        public void ModelBFucntion1()
        {

        }

        public void ModelBFucntion2()
        {

        }
    }

可是咱們一樣能夠在ModelACar和ModelBCar 中訪問StartEngine和StopEngine方法。blog

在繼承一個父類時,成員的可訪問性就成了一個重要的問題。子類不能訪問父類的私有成員,但能夠訪問其公共成員。不過,子類和外部的代碼均可以訪問公共成員。這就是說,只使用這兩個可訪問性,不能讓一個成員可由父類類和子類訪問,而不能由外部的代碼訪問。繼承


爲了解決這個問題,C#提供了第三種可訪問性:protected,只有子類才能訪問父類的protected 成員。對於外部代碼來講,這個可訪問性與私有成員同樣:外部代碼不能訪問private 成員和protected 成員。教程

 

來開一個具體的例子吧。你建立一個項目。解決方案名稱爲Sloution24,項目名稱爲Exercise24,項目類型爲控制檯程序。ci

新建三個類文件,名稱分別爲Car,ModelACar,ModelBCar。

 

點擊Car.cs。修改代碼以下。

點擊ModelACar.cs。修改代碼以下。

 

點擊ModelBCar.cs。修改代碼以下。

 

點擊Program.cs。修改代碼以下。

 

運行結果

 

 

練習
 
  

  1. 讀懂這段代碼,爲每條語句加上註釋,解釋它的功能。

  2. 新建一個ModelCCar類,讓它繼承Car類。在main方法中新建一個ModelCCar類的對象,調用startEngine和StopEngine方法。

  3. 修改Car類的StartEngine和StopEngine方法。例如多輸出幾行字符。運行程序,看看對ModelACar和ModelBCar調用StartEngine和StopEngine方法有影響嗎?

  4. 修改Car類的字段和方法的public訪問限制符爲private。運行程序,看看是什麼結果?解釋一下緣由是什麼?

  5. 在main方法中能夠調用Car類的TestEngine方法嗎?爲何?怎樣修改才能調用?

  6. 新建一個ModelDCar類,讓它繼承ModelACar類。在main方法中新建一個ModelDCar類的對象,看看都能調用什麼方法。分別調用一些試試看。

 

 

 


付費解答C#入門學習過程當中碰到的各類問題。

零基礎學習C#入門,大多數的問題均可以經過自學或藉助互聯網解決。

可是仍是會有一些問題,不是那麼容易解決,成爲了你學習的絆腳石。最後甚至形成你學習的半途而廢。一般學習C#編程入門,你會遇到20到30多個你不能很容易解決的問題。

這個時候,你最須要什麼呢?

對!一個專業的老師給你幫助!

你在學習本課程中,遇到任何問題均可以經過qq或email想本教程做者進行求助。

只需30元你就能夠獲得本教程做者的三次專業解答。因此你只需不到300元就能夠順利的完成C#入門,今後推開軟件行業的大門。

 

付費方式很是簡單:

用微信掃描下面的二維碼。在付款留言中留下你的qq號或email地址就能夠啦。

 

教育不是要便宜,而是要可靠!真正聰明的人,更懂得花錢讓專業的人爲本身服務,提升本身的效率。

 

老師qq:2040227296

老師email:2040227296@qq.com

相關文章
相關標籤/搜索