如下是基类的代码  
 /// <summary>
        /// 产生参数
        /// </summary>
        protected virtual void GenrFieldParam()
        {
        }
继承类的重写这个方法如下
 protected override void GenrFieldParam()
    {
        dp.AddField("AA01", this.AA01);
        dp.AddField("AA02", this.AA02);     
    }
只是我不明白为什么一定要先在基类预先写一个空白的方法, 完全可以省掉这个步骤, 如果基类不写,直接在继承类写一个 
 protected  void GenrFieldParam()
    {
        dp.AddField("AA01", this.AA01);
        dp.AddField("AA02", this.AA02);     
    }
也是可以的呀,但是大家都为什么要在基类要多写了一下这个步骤呢,请高人指点

解决方案 »

  1.   

    没有看你的代码,或许我的回答你已经说了。单看你的标题“关于继承基类时候,为什么喜欢在基类预先有一个virtual空的方法”,我可以明确地说,“没有必要纠缠什么喜欢不喜欢的词儿”。只有必要,才需要写。如果没有必要,写上他难道你手指头不疼吗?反正我是懒得写。一但你看到了这个词儿,你应该想到作者可能动过脑子了,可能有过测试了,他是给有需求的人的(包括他自己)。他绝不是因为这个词儿比较时髦而写。
      

  2.   

    你可以简单的这样理解:如果你的基类只能一个子类继承,那可能无所谓,直接在子类写GenrFieldParam()就可以了。但是如果你的基类如果要被多个子类继承,那基类的 virtual void GenrFieldParam() 是不是就很有必要了,它可以要求子类都必须要有这个方法。说白了,你还没理解面向对象的思想
      

  3.   

    virtual 方法是希望被子类重写,这样类行为可以将来再定义。
    个人不喜欢这种方式,类的行为会变得不明确。
      

  4.   

    为了多态~多态~
    http://www.cnblogs.com/Bear-Study-Hard/archive/2006/09/06/496366.html