1. 程式人生 > >詳談java的構造方法和許可權

詳談java的構造方法和許可權

1,java的構造方法

1)什麼是構造方法?
名字和類名完全一樣,沒有返回值(可理解為返回一個物件),
用new來調,呼叫的結果是在堆記憶體中建立一個物件空間且返回它的堆記憶體首地址


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

    //空參構造
    public MyDate_1(){

    }
    //帶參構造
    public MyDate_1(int year, int month, int day) {
        super
(); this.year = year; this.month = month; this.day = day; } //拷貝構造 public MyDate_1(MyDate_1 my){ this.year = my.year; this.month = my.month; this.day = my.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; } @Override
public String toString() { return "MyDate_1 [year=" + year + ", month=" + month + ", day=" + day + "]"; } }

public class TestMyDate_1 {
    public static void main(String[] args) {

        //呼叫空參構造
        MyDate_1 my1 = new MyDate_1();
        System.out.println(my1);

        //呼叫帶參構造
        MyDate_1 my2 = new MyDate_1(2017,10,1);
        System.out.println(my2);

        //呼叫拷貝構造
        MyDate_1 my3 = new MyDate_1(my2);
        System.out.println(my3);
        /**
         * 列印結果:
         * MyDate_1 [year=0, month=0, day=0]
         * MyDate_1 [year=2017, month=10, day=1]
         * MyDate_1 [year=2017, month=10, day=1]
         */
    }
}

2)構造方法的特點
如果我們沒有手動寫構造方法,則Java會自動幫我們新增一個預設構造方法(空參的構造方法)。如果我們手動寫了構造方法,則Java不會幫我們新增預設構造方法(空參的構造方法),如果我們需要就手動再新增

3)在構造方法中呼叫構造方法
這個需要使用this()

public MyDate(MyDate d) {
    //在構造方法中呼叫構造方法,
    //用this(...), 且該方法只能在構造方法中呼叫,
    //功能是給記憶體中的資料賦值
    this(d.year,d.month,d.year); 
}

2,java中的許可權問題

許可權從低到高(4種):
1)private: 只有當前類能夠訪問
2)預設(預設): 只有當前包中的所有類(包含當前類)能訪問
3)protected: 當前包中的類能夠訪問,其它包中若是子類也能訪問。其它包中不是當前類的子類則不能訪問。
4)public: 任意類(無論是否是相同的包或子類關係)都能訪問

這裡寫圖片描述