子类重载父类的方法,当父类实例化时调用此方法,而子类成员没有实例化,

今天反编译别人的代码出现类似下面的代码,出现实例化时出错.

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(当然原来的方法不是这类的)应属性类初始化方法,此方法不应作为虚方法提供,而应由各个子类自己负责自己的初始化方法,父类只负责自己的初始化,不然如果父类与子类的开发人员不是同一个人,或没有父类的源码,则很容易造子类编写者一时找不到错误的原因.只能经过动态跟踪调试才能找到原因.

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