问题描述:
class Emplyee{
private String name;
private int age;
private double salary;
public Employee(String newName,int newAge,double newSalary) {
this(newAge,newSalary);
System.out.println("三个参数的构造方法被调用");
name=newName;
}
}
原因分析:
Constructor call must be the first statement in a constructor
实际原因是class名和方法名不一致。
知识点:
super()和this ()不能共存。否则编译时会报异常。
换句话说就是super()和this()都必须在构造方法的第一行。
this(有參数/无參数) 用于调用本类对应的构造函数
super(有參数/无參数) 用于调用父类对应的构造函数
不能同时出现,是因为this和super都要定义在第一行,所以只能有一个;那么为什么要定义在第一行呢?先说super,因为子类继承了父类的属性和方法,所以在先初始化父类的属性和方法,这样子类才可以初始化自己特有的,因为,或者自定义了带参的super,这样就初始化了父类的成员了,所以写了this的构造函数不能再写super了,因为实例化一个对象运行两次super是不安全的。