一直对继承问题有些不清楚,因为要项目开发中用得也不多,所以也就没有深究。最近重新看继承的问题,对派生类中继承甚基类的构造函数问题总有些凝问。在派生类如何隐藏基类中的构造函数。在派生类可以隐藏基类的方法,但好像找不到隐藏基类中构造函数的方法。如果派生类和基类中都有一个无参的构造函数,在对派生类实例化时把基类和派生类的构造函数都执行了。如: class mybasec { public mybasec(int i) { Console.WriteLine("这是基类中的有参函数变量名是i,值为{0}", i); } } class myDerivec:mybasec { public myDerivec(int i) { Console.WriteLine("这是派生类中的有参函数变量名是i,值为{0}", i); } }问题1:程序编译错误,问题是基类中不包含0参数的构造函数,为什么不行。问题2:在myDerivec myd2 = new myDerivec(6);时不想执行基类中的构造函数,有没有办法把基类中的构造函数隐藏?
2 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
第一个问题:这个代码肯定报错,你的基类构造函数要求一个参数。你继承以后,它照样要求一个参数。而你在子类的构造函数中,并没有这么做,那么它肯定要报错,原因是你没有为基类的构造函数传递参数。
public mybasec(int i)
{
Console.WriteLine("这是基类中的有参函数变量名是i,值为{0}", i);
}
第二个问题: 没有办法隐藏,但是你可以重载,在基类中增加如下代码
public mybasec()
{
Console.WriteLine("这是基类中的有参函数变量名是i,值为{0}", i);
}
现在就不会在出现问题了。
- 2 回答
- 0 关注
- 450 浏览
添加回答
举报
0/150
提交
取消