为什么java会默认提供无参构造方法
小话题:大神勿喷
众所周知,如果一个类中没有为其定义构造方法,那么它会默认提供一个无参构造方法,而你定义了有参构造方法以后,无参构造方法就没了?
//定义一个Car类
public class Car {
//为Car类定义一个成员变量
private int age;
//并没有手动定义无参构造方法
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//测试类
public class CarTest {
public static void main(String[] args) {
//直接使用Car的无参构造方法
Car car = new Car();
car.setAge(1);
//输出1
System.out.println(car.getAge());
}
}
为了证明为什么会默认提供无参构造方法,我们可以把Car.class文件进行反编译,内容如下:
确实虚拟机在编译的时候默认给我们加上了无参构造方法。
同理,证明当我们定义有参构造方法后,无参构造方法就消失了
//定义一个Car类
public class Car {
//为Car类定义一个成员变量
private int age;
//定义有参构造方法后,无参构造方法没了
public Car(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
再次反编译Car.class文件
确实当我们自定义有参构造方法后,无参构造方法不见了。
OK,上面问题都已经证明结束。
往期回顾
●
●
●