0
点赞
收藏
分享

微信扫一扫

为什么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文件进行反编译,内容如下:

为什么java会默认提供无参构造方法_反编译

确实虚拟机在编译的时候默认给我们加上了无参构造方法。


同理,证明当我们定义有参构造方法后,无参构造方法就消失了



//定义一个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文件

为什么java会默认提供无参构造方法_反编译_02

确实当我们自定义有参构造方法后,无参构造方法不见了。

OK,上面问题都已经证明结束。



举报

相关推荐

0 条评论