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.)可以省略
    }
}

Guess you like

Origin blog.csdn.net/qq_45858803/article/details/121308066
Recommended