A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zhangcheng5468 于 2013-7-8 18:03 编辑

定义父亲类Father(姓firstName,财产wealth,血型blood),儿子Son类(玩游戏PlayGame),女儿Daughter类(跳舞Dance),调用父类构造函数给子类字段赋值

这题是什么意思啊
通过父类构造函数给子类字段赋值。如果父类构造函数中能给子类字段赋值,那么这个子类字段一定是父类中也有的啦?但是我们的开发原则是字段一般访问级别不能是public,这样子类也就没有继承该字段,何谈给子类字段赋值呢?求解???:Q

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

3 个回复

倒序浏览
字段的访问级别一般是私有的,也就是private,在该类的外面不可以访问它;但C#里面还有一种访问级别protected,它也能保护字段不被外界访问,只允许该类和它的派生类来访问。
回复 使用道具 举报
其实这样的考察根本没什么意思,只是为了考察你对类的掌握的熟练程度。子类虽然不能访问的父类的私有字段,但是它确实是继承了并且开辟了私有空间。子类继承了本来不存在的父类的字段,然后根据基类(base)调用指定的构造函数,通过基类参数传递来达到这种效果。

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
赵宗荣 发表于 2013-7-8 17:22
其实这样的考察根本没什么意思,只是为了考察你对类的掌握的熟练程度。子类虽然不能访问的父类的私有字段, ...

现在问题解决了,楼上正解。
我们可以在子类总通过base关键字调用父类构造函数为子类赋值
  1. class Son : Father
  2.     {
  3.         //通过调用父类构造函数给子类字段赋值
  4.         public Son(string firstName, decimal wealth, Bloods blood): base(firstName, wealth, blood){ }
  5.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马