关于有参构造函数的继承问题

基础不扎实啊。。。
今天在写代码的时候,父类写了一个有参的构造函数,结果子类怎么写都报错,提示父类不包含采用“0”参数的构造函数。在父类增加一个无参的构造函数之后,确实不报错了,但却不是我想要的处理方式。于是从网上搜了一下,解释是这样的:

类会从下往上延继承关系依次调用父类的无参构造函数。当FatherClass的无参构造函数被注释后,这条通道自然就不存在了,当然会报错。

解决办法很简单,在子类的构造函数中显示调用父类的有参构造函数。下面写了Java和C#对应的写法。

Java正确写法

public class Father {
	public Father(int i) {
	}
}

class Son extends Father {
	public Son(int i) {
		super(i);
	}
}

C#正确写法

class Father
{
    public Father(string s)
    {
        Console.WriteLine("father said " + s);
    }
}
class Son : Father
{
    public Son(string s) : base(s) { }
}

参考:
C#类继承中构造函数用法小结

posted @ 2014-12-26 23:33  wardensky  阅读(684)  评论(0编辑  收藏  举报