重讀C#進階編程之建構函式在繼承中的應用

來源:互聯網
上載者:User
   最近總是很懶,看書的時候不想動手。明知道編程這東西只是看是不行的,所以,還是要堅持把Demo進行到底~
   之前知道,建構函式在繼承關係中的執行順序是這樣的:首先執行基類的建構函式,而後才是要執行個體化的類本身。當然這裡的基類是個遞迴的過程,也就是說只要存在繼承關係,那就會一直遞迴到System.Object為止.
   其實這層關係,寫兩個具有繼承關係的類,再寫這個建構函式,執行個體化這個繼承類,單步調試就可以很清晰的看到建構函式的執行過程.這裡,如果兩個類都採用預設的建構函式,那這個關係自然是看不到的.
   這裡我要說的是具有參數的建構函式的執行。比如說,我們會把一些共有的屬性寫進基類中去,而在執行個體化繼承類的時候,往往會在建構函式中初始化這些屬性(基類),這個時候,就要用到Base關鍵字,除此之外,建構函式的執行順序依然遵循上述順序.
  Demo:using System;
using System.Collections.Generic;
using System.Text;

namespace ConstructorDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            LittleBird lb = new LittleBird("lbname",4);
            Console.WriteLine(lb.Name+"---"+lb.Num);
            lb.showName();

            Animal ain = new bird("birdname");
            Console.WriteLine(ain.Name);
            ain.showName();
            
        }
    }

   abstract class Animal
    {
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public Animal(string name)
        {
            this.name = name;
        }

       public abstract void showName();

    }
    class bird : Animal
    {
        public bird(string bird_name)
            : base(bird_name)    //給基類建構函式傳參
        {
 
        }

        public override void showName()
        {
            Console.WriteLine("hi,this is bird :{0}",Name);
        }
    }
    class LittleBird : bird
    {
        private int num;
        public int Num
        {
            get
            {
                return num;
            }
            set
            {
                num = value;
            }
        }

        public LittleBird(string lb_name,int lb_num)
            : base(lb_name)   //給基類建構函式傳參
        {
            this.num = lb_num;   //執行本身建構函式
        }

        public override void showName()
        {
            base.showName();               //調用基類方法
            Console.WriteLine("hi,this is little bird :{0}",Name);
        }
    }
}

同時注意到Base關鍵字的用法:
1.調用基類建構函式,並傳參。
2.調用基類方法(當然是在重寫的方法中調用)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.