物件導向系列菜單5-『物件導向特性-繼承(Inheritance)4-abstract』

摘要:物件導向系列菜單5-『物件導向特性-繼承(Inheritance)4-abstract』

方唐鏡:包大人~
包大人:你那位?
方唐鏡:我方唐鏡三個字都沒聽過,好大的官威啊
包大人:有屁快放!~
方唐鏡:有位官爺的『高級轎子』,就是買來給兒子繼承的要著麼處置呢~請包…包~大人告訴我。
包大人:就…呃…反正會幫你處置,不要問! 很恐怖的!
 

 
正文開始
 
本文討論主題為
1.『類別的東西就是只能繼承不能用的,這麼做呢?』
2.『抽象方法的使用』
 
『類別的東西就是只能繼承不能用的,這麼做呢?』
 
Step1. 使用修飾詞『abstract』
在類別宣告裡,只能將它當「基底類別 Base Class」。被標記的類別無法實作。
 
 
在Class Car 前增加『abstract』,該類別只能繼承、不能實作。

//父類別
    //增加『abstract』修飾詞,讓該類別只能繼承。不能實作。
    public abstract  class Car
    {

        //車子的速度
        protected string Speed;
        //車子的顏色
        protected  string Color;

        // 定義建構子,預設Speed為50,Color為Blue
        public  Car()
        {
            Speed = "50";
            Color = "Blue";
        }

        //定義車子移動的方法。  
        public  string DriveCar(string a)
        {
            return "正在開『" + Color + "』的車" + "時速『" + Speed + "』在移動" ;
        }

    }
如果要實體化該類別就會出錯。
 
注意
抽象類別的特性
1.抽象類別不能實體化。
2.抽象類別可能包含抽象方法與存取子。
3.無法使用『Sealed』修飾詞,因為兩個意思完全相反。
4.衍生自抽象類別的非抽象類別必須包含所有繼承抽象方法和存取子的實作。
 
『抽象方法的使用』
 
抽象方法只能存在於抽象類別中。不然會出錯喔。
 
 

 //父類別
    //增加『abstract』修飾詞,讓該類別只能繼承。不能實作。
    public abstract  class Car
    {

        //車子的速度
        protected string Speed;
        //車子的顏色
        protected  string Color;

        // 定義建構子,預設Speed為50,Color為Blue
        public  Car()
        {
            Speed = "50";
            Color = "Blue";
        }

        //定義車子移動的方法。  
        //抽象方法宣告,沒有提供實際的實作,因此並沒有方法主題。
        //抽象方法只能存在於抽象類別中。
        public   abstract   string DriveCar();

    }

 

子類別,使用Overried,來進行抽象類別覆寫。
 

// 子類別繼承Car
    public class BMWCar :Car
    {
        //BMWCar類別建構子
        public BMWCar()
        {

            Speed = "BMW500";
            Color = "BWM_Red";
        }

        //BMW的屬性引擎
        public string BMWPower;

        //定義車子移動的方法
        //使用存取修飾詞Overried,來進行抽象類別覆寫方法提供自已實作。
        public  override string DriveCar()
        {
            return "正在開『" + Color + "』的車" + "時速『" + Speed + "』在移動" + "『Override』" + "String--" ;
        }


    }
注意
抽象方法的特性
1.抽象方法隱含是一種虛擬方法(但他無法擁有Virtual修飾詞)。
2.抽象方法宣告只允許在抽象類別裡。
3.因為抽象方法宣告沒有提供實際的實作,因此並有沒方法主題,方法宣告僅以分號做結束。
 

 

4.在抽象方法宣告『static』與『virtual』修飾詞會出錯。
 

 

 



小弟才書學淺~請各位客官指教指教~~~

小弟日 : 你要知道自已不是帥哥,你才有可能變成帥哥 。