黑马程序员技术交流社区

标题: 通过父类构造函数给子类字段赋值??? [打印本页]

作者: zhangcheng5468    时间: 2013-7-8 16:42
标题: 通过父类构造函数给子类字段赋值???
本帖最后由 zhangcheng5468 于 2013-7-8 18:03 编辑

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

这题是什么意思啊
通过父类构造函数给子类字段赋值。如果父类构造函数中能给子类字段赋值,那么这个子类字段一定是父类中也有的啦?但是我们的开发原则是字段一般访问级别不能是public,这样子类也就没有继承该字段,何谈给子类字段赋值呢?求解???:Q
作者: leayon    时间: 2013-7-8 16:49
字段的访问级别一般是私有的,也就是private,在该类的外面不可以访问它;但C#里面还有一种访问级别protected,它也能保护字段不被外界访问,只允许该类和它的派生类来访问。
作者: 赵宗荣    时间: 2013-7-8 17:22
其实这样的考察根本没什么意思,只是为了考察你对类的掌握的熟练程度。子类虽然不能访问的父类的私有字段,但是它确实是继承了并且开辟了私有空间。子类继承了本来不存在的父类的字段,然后根据基类(base)调用指定的构造函数,通过基类参数传递来达到这种效果。
作者: zhangcheng5468    时间: 2013-7-8 18:07
赵宗荣 发表于 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.     }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2