1、使用super调用父类的构造方法,必须是子类构造方法的第一个语句。
使用this调用重载的构造方法,也必须是构造方法的第一个语句。
可以看到,程序中已经标红,这是不行的。解决这个问题,可以自己定义一个init方法,来初始化成员变量,通过调用init方法解决这个问题。如下所示:
2、如果父类里面没有一个缺省的构造方法(没有任何参数的构造方法),那么子类必须通过super关键字,在构造方法的第一行调用一个有参数的构造方法,把参数传进去。相反,如果父类里有一个缺省的构造方法,在子类中不需要去做上边的这些调用,java会帮我们去调用,父类中没有参数的构造方法。有点绕,需要多琢磨琢磨。
// 父类中缺省的构造方法被注释了
// public MerchandiseV2() {
// this("无名", "000", 0, 1, 1.1);
// }
public Phone() {
super("无名", "000", 0, 1, 1.1); // 子类必须通过super关键字,调用一个有参的构造方法。
init(4.5, 4.6, 6, 128, "Uknown", "Uknown");
}