子類重載父類的方法,當父類實例化時調用此方法,而子類成員沒有實例化,

今天反編譯別人的代碼出現類似下面的代碼,出現實例化時出錯.

public class baseClass
    {
        public baseClass()
        {
            GetString();
        }
        public virtual string  GetString()
        {
            return string.Empty;
        }
    }
    public class SubClas:baseClass
    {
        private string msg;
        public SubClas(string mmsg):base()
        {
            msg = mmsg;
        }
        public override string GetString()
        {
            return msg.ToString();
        }
    } 

這個問題當然可以在聲明子類成員時實例化成員,但總感覺這樣不太好,正在找原因呢,不知那位大俠已有更好的辦法.

我認爲GetString(當然原來的方法不是這類的)應屬性類初始化方法,此方法不應作爲虛方法提供,而應由各個子類自己負責自己的初始化方法,父類只負責自己的初始化,不然如果父類與子類的開發人員不是同一個人,或沒有父類的源碼,則很容易造子類編寫者一時找不到錯誤的原因.只能經過動態跟蹤調試才能找到原因.

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