有關Java實體類中get、set方法和有參無參構造方法的個人見解。
結論:(總的來說,get和set方法就是為了能以得到和設定實體類中的私有屬性值,而一個類中至少要有一個構造方法,當沒有人為新增的時候,編譯器會自動加入一個隱式的無參構造方法,當有人為新增時,編譯器就不會自動添加了。無參構造方法的作用是為了比較方便的new出一個物件。)
當你在學習Java的時候,可能會遇到這樣的問題,老師在某節課上說:“來同學們,咱們今天來建一個實體類,首先宣告私有屬性,然後再呼叫get和set方法,繼續呼叫一個帶參的構造器和一個空的構造器,同學們只需要記住就好,這是標準。”
然後底下的學生也就這樣記下來,常常事與願違,由於我的記性是出了名的差,才睡了個覺就已經忘得一乾二淨了,每次都要翻開老師敲過的程式碼重溫一遍才能繼續下去,好景不長,過了幾天又忘了,就在今天,我恍然大悟,原來它們很好理解。
建立實體類也就是為了將幾個屬性放在一塊,將其裝在一個類裡面為了方便使用者的呼叫。
首先,我們看一下get、set方法的作用是什麼,見名知意,get、set分別是得到和設定的意思,也就是說,其他的類中不能直接訪問你這個類中的私有屬性,但是可以通過get和set方法來間接的得到和設定這些私有屬性的值,這樣會讓這個實體類那麼死板,只能有一種屬性值。
然後,讓我們瞭解一下有參和無參構造方法,在一個類中如果沒有人為的寫構造方法時,系統會自動新增一個隱性的無參空構造方法。
public class Dog {
private String name = null;
private String color = null;
//系統預設新增的空構造方法,以隱性方式存在
/* public Dog() {
super();
} */
public void show() {
System.out.println("名字是"+ name);
System.out.println("顏色是" + color);
}
但當有人為新增進去的構造方法時,系統就不會新增那個空構造方法。
public class Dog {
private String name = null;
private String color = null;
//人為新增構造方法後,系統不會再自動新增空構造方法
public Dog(String name, String color) {
super();
this.name = name;
this.color = color;
}
public void show() {
System.out.println("名字是"+ name);
System.out.println("顏色是" + color);
}
}
這時候就需要主動的新增一個空構造方法進去,就是圖1被註釋掉的程式碼。
那如果不新增會怎樣呢?我們來嘗試一下,類的程式碼如下:
public class Dog {
private String name = null;
private String color = null;
public Dog(String name, String color) {
super();
this.name = name;
this.color = color;
}
public void show() {
System.out.println("名字是"+ name);
System.out.println("顏色是" + color);
}
}
然後,我們在重新建一個類,在裡面實現這個物件看看:
從圖片可以看出來,當我們new出dog1的時候,編譯器報錯了,而new出dog2時,編譯器正常,這是為啥呢?經過我的查詢最終發現,我在建立實體類的時候,沒有寫空構造方法,所以當你new出dog1就會出錯。這就是空構造器的作用,它可以讓你先new出一個空物件,不需要立刻將物件內的屬性值都填上去。