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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下:
class Person {
    String name, department;
    int age;
    public Person(String n){ name = n; }
    public Person(String n, int a){ name = n; age = a; }
    public Person(String n, String d, int a) {
             this(name,age); //问题代码
              department = d;
    }
  }
//问题代码这个位置为什么不能这样写?按照创建对象的流程,成员变量是先于构造函数默认初始化的.那么this(name,age)里面的两个变量已经有值了,为什么不能调用呢?程序报的错是"不能引用超类构造函数".
不考虑该代码的意义,就是分析下原因

4 个回复

倒序浏览
this(name,age);  你是想要调用本类的带有2个参数的构造方法,但是你this里面的name和age,是属性,这就不对了。构造方法的作用是为了给属性初始化值,也就是在此类被创建的时候,调用构造方法,把值赋值给属性,而不是用属性的值,再去调其他的构造方法,为其赋值。你改为this(n,a);就没错了;

点评

解释的很清楚~谢谢了!但是this()里面不是传的是参数值吗?  发表于 2015-11-17 12:38

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
pqq 中级黑马 2015-11-17 22:56:14
藤椅
楼上正解
回复 使用道具 举报
来随便看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马