C#淺析接口與抽象基類-學習總結

C#淺析接口與抽象基類--學習總結

 1. 個性大於共性。   

  2. 差異較大的個性間具有某些相同的行爲。   

  3. 相同行爲的實現方式有較大區別。

 

開門見山: 

當在差異較大的對象間尋求功能上的共性時,使用接口。

當在共性較多的對象間尋求功能上的差異時,使用抽象基類。

接口案例:

//==============================================================
    //  作者:zhoupei
    //  時間:2019/2/15 16:34:27
    //  文件名:InterFace_Swim
    //  版本:V1.0.1  
    //  說明:接口  
    //==============================================================
    //定義接口,游泳
    public  interface ISwim
    {
        //定義方法;游泳的方式
        public void SwimmingStyle();
    }

    //定義人類;繼承游泳接口
    public class Person : ISwim
    {
        //人類游泳
        public void SwimmingStyle();
    }

    //定義蛙類;繼承游泳接口
    public class Frog : ISwim
    {
        //蛙類游泳 
        public void SwimmingStyle();
    }

    public class Fish : ISwim
    {
        //魚類游泳
        public void SwimmingStyle();
    }

抽象基類案例:

 //==============================================================
    //  作者:zhoupei
    //  時間:2019/2/15 16:34:27
    //  文件名:Abs_Fish
    //  版本:V1.0.1  
    //  說明:抽象基類  
    //==============================================================
    /// <summary>
    /// 定義魚類游泳
    /// </summary>
    public abstract class Abs_Fish
    {
        public abstract void FishSwim();
    }

    //鯽魚游泳
    public class JI_Fish : Abs_Fish
    {
        public override void FishSwim()
        {
            Console.WriteLine("鯽魚游泳");
        }
    }

    //錦鯉游泳
    public class LI_Fish : Abs_Fish
    {
        public override void FishSwim()
        {
            Console.WriteLine("錦鯉魚游泳");
        }
    }

    //金魚游泳
    public class Gold_Fish : Abs_Fish
    {
        public override void FishSwim()
        {
            Console.WriteLine("金魚游泳");
        }
    }

 

觀察在使用接口或是使用抽象基類的幾條理由中,第三條理由其實是一樣的,它所描述的是面向對象中多態的概念,即通過覆蓋父類的方法來實現,在運行時根據傳遞 的對象引用,來調用相應的方法。第二條理由開始產生分歧,接口更加強調了繼承對象間具有相同的行爲,而抽象類同時還強調了繼承對象間具有相同的屬性。

引自:淡淡的憂傷 的話

歸納如下:     

當在差異較大的對象間尋求功能上的共性時,使用接口。     

當在共性較多的對象間尋求功能上的差異時,使用抽象基類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章