黑马程序员技术交流社区

标题: 关于构造函数中调用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
来随便看看




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