黑马程序员技术交流社区

标题: 继承构造器问题。 [打印本页]

作者: 王靖远    时间: 2013-5-27 17:58
标题: 继承构造器问题。
本帖最后由 王靖远 于 2013-5-27 18:08 编辑
  1. class Chinese extends Person//定义一个Chinese类继承Person
  2. {
  3.         
  4.         private final String country = "cn";
  5.         Chinese(String name,int age,String country)
  6.         {
  7.                 super(name,age);
  8.                   this.coountry = country//这样写不行。final修饰的怎么构造啊?
  9.                
  10.         }
  11.         
  12.         
  13. }
复制代码

作者: 黄丽军    时间: 2013-5-27 18:08
final修饰的东西给了初值"cn"就不能再重新赋值了。去掉“cn”,或者在静态代码块中给country赋值,另外,你那里的this.coountry = country没分号,单词也拼错了。
作者: SOAR    时间: 2013-5-27 18:23
写成final的以后,它有两种构造方式
1.在初始化的时候构造
就像你写的 private final String country = "cn";
2.在构造函数里构造。、
但是还有一点是,只要构造了以后,它就不能在改变了。
所以,你要么在初始化的时候构造,要么在构造函数里构造。
作者: 王瀛    时间: 2013-5-27 18:24
被final修饰后的变量为常量,被赋值一次后,不可更改。

而且,既然定义的是Chinese类,国籍属性已经锁定,没有必要设定一个带有country属性的构造函数了(不知这部分代码的上下文,所以意图不明)

如果非要传入country的值 只能考虑把final修饰符去掉了
作者: 王靖远    时间: 2013-5-27 18:26
王瀛 发表于 2013-5-27 18:24
被final修饰后的变量为常量,被赋值一次后,不可更改。

而且,既然定义的是Chinese类,国籍属性已经锁定, ...

嗯就是这意思。既然国籍固定了,就不需要传入构造器了。我想传入构造器是因为那里老是由个黄色感叹号提示我未使用这个变量。
作者: 王瀛    时间: 2013-5-27 18:33
王靖远 发表于 2013-5-27 18:26
嗯就是这意思。既然国籍固定了,就不需要传入构造器了。我想传入构造器是因为那里老是由个黄色感叹号提示 ...

eclipse么,之前使用过一次,也是出来类似黄色叹号的东西,但是编译运行什么的都可以(不知算不算正常)

不过我刚开始学习,还在看毕老师的视频,就又用回Editplus了 =。=
作者: 画饼    时间: 2013-5-27 18:52
你先不要赋值。=nul;然后在构造函数里面赋值试试!这个问题没去试过




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