class A {
int year, month, day;
public A() {
this(2016, 4, 5);//This调用本类的其他构造函数,必须写在第一行
//super()是调用父类的无参构造函数,写不写super()均可,子类默认调用super();
//super(int x)是调用父类的有参构造函数;
//无论是super()还是super(xxxx)也要写在子类构造函数的第一行,
//所以super和this关键字不能同时出现在子类的构造函数中
}
public A(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public void print() {
System.out.println(year + "," + month + "," + day);
}
}
public class Test {
public static void main(String[] args) {
A a = new A();
a.print();
}
}
///输出: 2016,4,5
java,this放在第一行,不能和super同时使用
最新推荐文章于 2022-11-18 18:00:01 发布
在Java中,`this`关键字用于调用本类的其他构造函数,而`super`用于调用父类的构造函数。两者都必须位于构造函数的第一行,因此不能在同一构造函数中同时使用。这是因为它们都涉及初始化过程,先初始化父类的属性和方法,再进行子类的初始化。如果在同一个构造函数中使用`this`和`super`,可能会导致对象的初始化冲突,因此Java不允许这样做。
摘要由CSDN通过智能技术生成