關於構造函數


構造函數的做用是根據參數不一樣來建立一個不一樣的實例對象,如今我想介紹一下實例對象的過程,咱們都知道若是沒有說明繼承那個類,那麼一個類默認繼承的是System.Object類。因此若是是一個指明瞭繼承哪一個類,那麼至少它繼承兩個類。函數

如今開始介紹構造函數,構造函數是沒有返回類型的啊,不知道這個你們知道不。主要仍是經過代碼會更清楚吧,下面開工代碼this

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public class Write
    {
        public  Write()
        {Console.WriteLine("先執行");}//這個默認的狀況下是省略的,如今爲了明顯期間 我就添上了,下同
    
    }

    public class ReWrite:Write
    {
        public  ReWrite()
        {Console.WriteLine("後執行"); }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ReWrite rw = new ReWrite(i, j);
            Console.ReadKey(); 
        }
    }
}

這個的執行過程是System.Object方法,Write方法,ReWrite方法。不管是否有繼承存在 Object是必須執行的 並且是先執行的。若是不行的話 咱們能夠在每一個函數中添加一個Console.WriteLine("******");主要就能看出那個先執行了。spa

其實我想介紹的重點不是這個是下面一個。請看代碼code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public class Write
    {
        public Write()
        { }
        public Write(int i)
        {
            Console.WriteLine("{0}", i);
        }
        public Write(int i, int j)
        {
            Console.WriteLine("{0}和{1}", i, j);
        }

    }

    public class ReWrite : Write
    {
        public ReWrite()
        { }
        public ReWrite(int i)
        {
            Console.WriteLine("{0}", i);
        }
        public ReWrite(int i, int j)//{replace}
        {
            Console.WriteLine("{0}和{1}", i, j);

        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            int i = 3, j = 4;
            ReWrite rw = new ReWrite(i, j);
            Console.ReadKey();
        }
    }
}

這個執行順序你們應該很明白了,是先執行object方法,而後執行Write()方法。最後執行ReWrite(i, j);方法。可是若是我想執行Write(i)方法怎麼辦呢 其實很簡單對象

只須要把//{replace}改爲base(i)或this(1)就OK了
繼承

具體base和this的用法在下一篇提到;
相關文章
相關標籤/搜索