为了账号安全,请及时绑定邮箱和手机立即绑定

C#基类与派生类的问题

C#基类与派生类的问题

慕容3067478 2018-11-01 01:03:29
 一直对继承问题有些不清楚,因为要项目开发中用得也不多,所以也就没有深究。最近重新看继承的问题,对派生类中继承甚基类的构造函数问题总有些凝问。在派生类如何隐藏基类中的构造函数。在派生类可以隐藏基类的方法,但好像找不到隐藏基类中构造函数的方法。如果派生类和基类中都有一个无参的构造函数,在对派生类实例化时把基类和派生类的构造函数都执行了。如: 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);
            }

现在就不会在出现问题了。


查看完整回答
反对 回复 2018-11-01
?
青春有我

TA贡献1784条经验 获得超8个赞

基类的构造函数不执行,意味着没有创建基类的实例,那么派生类怎么去访问基类的实例属性?所以CLR的设定,还是需要在实例化派生类的时候,先实例化基类的。


查看完整回答
反对 回复 2018-11-01
  • 2 回答
  • 0 关注
  • 450 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信