请问各位高手:父类中究竟写不写那个无参的构造方法呢?我也曾请教过他人,他们的回答说:“假如父类中你没有定义构造方法,它会默认一个无参的构造方法,但是假如你在父类中定义了一个有参的构造方法后,也必须去定义一个无参的构造方法。因为在子类中实例化的时候调用了父类的无参构造方法,但是在父类中却没有这个无参的构造方法”,我有点懂,但似乎又不懂,有点晕,哪位大哥能详细清楚、简单易懂的解释一下啊?

解决方案 »

  1.   

    本帖最后由 amandag 于 2010-06-16 12:46:23 编辑
      

  2.   

    假如你在父类中定义了一个有参的构造方法后,也必须去定义一个无参的构造方法(假如子类要有无参的构造函数)。这句话很明白。public class a
    {
    public a(string a)//如果子类也就是b如果有无参的构造函数.a就要加一个
    {}///a就要加一个这个无参构造函数。
    public a()
    {}///
    }public class a:b
    {}
      

  3.   

    MSDN的说法是:
    如果需要公共默认构造函数,请在类中进行显式声明。
    如果类支持默认构造函数,则显式定义默认构造函数是最佳做法。尽管某些编译器会自动向类中添加默认构造函数,但显式添加默认构造函数会使代码更易于维护。即使由于您添加了带参数的构造函数,导致编译器停止发出默认构造函数,这样也可确保定义默认构造函数。 
    如果你没有定义自己的构造函数,那么编译器会帮你生成默认的构造函数。如果你定义了一个有参数的构造函数,那么这个默认的构造函数就不会被自动添加了,这个时候,如果你希望子类调用父类的无参数构造函数,就必须显示声明了。
      

  4.   

    如果类没有构造函数,将自动生成一个默认的无参数构造函数,并使用默认值初始化对象字段
    类构造函数也可通过关键字 this 调用同一个类的另一个构造函数
    自定义构造函数,就要写参构造函数