Java中的无参构造和有参构造的区别

有参数的构造方法的主要目的是为类中的属性初始化的,而无参数的构造方法,可以控制new对象。

 

JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.如果Hello类中已经有了一个有参数的构造方法,这时再使用Hello hello = new Hello();来创建对象的时候就会出错,这就是为什么写了有参数的构造方法就最好加一个无参数的构造方法

下面用两段代码运行一下来展示区别:

 无参构造:

public class ParamDifferTest {
    int x;
    int y;

    public void movePoint(int dx,int dy){
        this.x=this.x+dx;
        this.y=this.y+dy;
    }
    public static void main(String[] args) {
        ParamDifferTest p1=new ParamDifferTest();
        p1.movePoint(2,5);
        System.out.println("p1的X坐标为"+p1.x+"\n"+"p1的Y坐标为"+p1.y);
    }
}

 输出结果:

 有参构造:

public class ParamDifferTest {
    int x;
    int y;

    public ParamDifferTest(int x0,int y0){
        this.x=x0;
        this.y=y0;
    }

    public void movePoint(int dx,int dy){
        this.x=this.x+dx;
        this.y=this.y+dy;
    }
    public static void main(String[] args) {
        ParamDifferTest p1=new ParamDifferTest();  //如果没有创造无参构造器,ParamDifferTest()中必须要有两个参数,类似下面movePoint(2,5)
        p1.movePoint(2,5);
        System.out.println("p1的X坐标为"+p1.x+"\n"+"p1的Y坐标为"+p1.y);
    }
}

 输出结果报错:

 或者带上参数:

 输出结果:

 创造一个无参构造器:

public class ParamDifferTest {
    int x;
    int y;
    
    public ParamDifferTest(){ }   //创造一个无参构造器,公式:public+类名(){}
    
    public ParamDifferTest(int x0,int y0){
        this.x=x0;
        this.y=y0;
    }

    public void movePoint(int dx,int dy){
        this.x=this.x+dx;
        this.y=this.y+dy;
    }
    public static void main(String[] args) {
        ParamDifferTest p1=new ParamDifferTest();  //如果没有创造无参构造器,ParamDifferTest()中必须要有两个参数,类似下面movePoint(2,5)
        p1.movePoint(2,5);
        System.out.println("p1的X坐标为"+p1.x+"\n"+"p1的Y坐标为"+p1.y);
    }
}

 输出结果:

 

posted @ 2023-03-20 15:36  one_starr  阅读(758)  评论(0)    收藏  举报