1. 程式人生 > >有關Java實體類中get、set方法和有參無參構造方法的個人見解。

有關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出一個空物件,不需要立刻將物件內的屬性值都填上去。