Java 使用this关键字实现 构造方法 调用 构造方法

Test类

public class Test {
          
   
    public static void main(String[] args) {
          
   
        Data time1 = new Data();
        time1.print();
        Data time2 = new Data(1999,4,28);
        time2.print();
    }
}

Data类

public class Data {
          
   
    private int year;
    private int month;
    private int day;

    public Data() {
          
   
        this.year=1997;
        this.month=4;
        this.day=28;
    }

    public Data(int year, int month, int day) {
          
   
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public int getYear() {
          
   
        return year;
    }

    public void setYear(int year) {
          
   
        this.year = year;
    }

    public int getMonth() {
          
   
        return month;
    }

    public void setMonth(int month) {
          
   
        this.month = month;
    }

    public int getDay() {
          
   
        return day;
    }

    public void setDay(int day) {
          
   
        this.day = day;
    }
    public void print(){
          
   
        System.out.println(this.year+"年"+this.month+"月"+this.day+"日");
        System.out.println(year+"年"+month+"月"+day+"日");
    }
}

Data 类 的另一种写法

public class Data {
          
   
    private int year;
    private int month;
    private int day;

    public Data() {
          
   
        this(1997,4,28);//此代码必须出现在构造函的第一行不然会报语法错误
        //隐含意思是说这种采用这种形式调用构造方法我们只能使用一次。
        //这是this的另一种用法形式为"this(参数列表)",使用这种方式实现构造函数
//        之间的相互调用。可以减少代码量。
//        this.year=1997;
//        this.month=4;
//        this.day=28;
    }

    public Data(int year, int month, int day) {
          
   
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public int getYear() {
          
   
        return year;
    }

    public void setYear(int year) {
          
   
        this.year = year;
    }

    public int getMonth() {
          
   
        return month;
    }

    public void setMonth(int month) {
          
   
        this.month = month;
    }

    public int getDay() {
          
   
        return day;
    }

    public void setDay(int day) {
          
   
        this.day = day;//此处的this. 如果省略那day=day都会变成局部变量int day
//        这是由于Java默认的就近原则导致的。
    }
    public void print(){
          
   
        System.out.println(this.year+"年"+this.month+"月"+this.day+"日");
        System.out.println(year+"年"+month+"月"+day+"日");//(this.)可以省略
    }
}
经验分享 程序员 微信小程序 职场和发展