标题: 关于构造函数中调用this(name,age)问题 [打印本页] 作者: MS.stellal 时间: 2015-11-16 01:27 标题: 关于构造函数中调用this(name,age)问题 代码如下:
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)里面的两个变量已经有值了,为什么不能调用呢?程序报的错是"不能引用超类构造函数".
不考虑该代码的意义,就是分析下原因作者: 袁文博老师 时间: 2015-11-16 10:34
this(name,age); 你是想要调用本类的带有2个参数的构造方法,但是你this里面的name和age,是属性,这就不对了。构造方法的作用是为了给属性初始化值,也就是在此类被创建的时候,调用构造方法,把值赋值给属性,而不是用属性的值,再去调其他的构造方法,为其赋值。你改为this(n,a);就没错了;作者: pqq 时间: 2015-11-17 22:56
楼上正解作者: zypt0218 时间: 2015-11-18 00:20
来随便看看