經常看到有朋友提到類似:對類中的屬性使用set/get方法的作用?理論的回答當然是封閉性之類的,但是這樣對我們有什麼作用呢?為什麼要這樣設計?我直接使用屬性名來訪問不是更直接,**更簡潔明瞭嗎?下面我們就來介紹下為什麼要使用set/get方法來代替直接訪問屬性。
1.靈活性
比如我們有乙個person類,我們給它設定乙個屬性name,但是我們希望在取名字的時候,不是只顯示名字,而是把名字按我們的要求輸出,比如」我的名字叫xx」,**如下:
public class person
public void setname(string name)
}
如上**,以後我們只要定義乙個person物件,並給他setname(xx),再getname的時候,就會顯示我的名字叫xx。在實際業務中還可以有更靈活的運用,這裡就不舉例了。
2.安全性。
比如我們的作業系統在新建使用者或在共享檔案的時候,經常會提示對針對某個使用者的許可權是什麼,是唯讀還是只寫還是可讀寫,這裡的讀寫就好比get/set。對於類來說,如果不使用set/get方法,直接用public定義某個屬性,那麼這個屬性是可讀可寫的,如果你希望乙個類的某個屬性是只能讀取,不能寫入的時候,上面用public定義某個屬性就不能滿足了,但是我們可以使用private定義屬性,再定義乙個get方法,但是不定義set方法來實現。反之,只定義set,不定義get則表示該屬性是只寫不能讀的。舉個簡單的例子,如下**。
public class circle
public void setradius(double radius)
/*** 計算周長
*/public double getc()
}
我們定義了乙個圓類,定義了屬性半徑和pai,半徑我只提供寫的方法,但是不提供讀,而pai只提供讀,但不能寫,並提供了乙個計算周長的方法getc。在實際專案中,對一些類的設計時,嚴謹的設計是要考慮哪些類是唯讀或是只寫的。
set/get的方法作用當然不只這些,實際專案中的用法有很多,比如對某個類公升級,有乙個屬性的type變化了,只要set/get的type不變就不會影響到以前的**。更多的用法只能在使用中多體會了。
Java中Set的使用
1.set的介紹 1 set中不允許出現重複的值 2 不保證值的順序 2.set的增 刪 改 查 2.1 增 set set new hashset set.add 1 set.add 2 set.add 3 set.add 4 2.2 刪 if set.isempty 為空 else 2.3 改 ...
Java中對Set和Map的選擇
hashset的效能基本上總是比treeset好,特別是在新增和查詢元素時,而這兩個操作也是最重要的操作。treeset存在的唯一原因是它可以維持元素的排序狀態,所以,只有當需要乙個 排好序的set時,才應該使用treeset。因為其內部結構支援排序,並且因為迭代是我們更有可能執行的操作,所以,用t...
類中屬性的使用
1 相同點 1.1 定義變數的格式 資料型別 變數名 變數值 1.2 先宣告,後使用 1.3 變數都有其對應的作用域 2 不同點 2.1 在類中宣告的位置不同 屬性 直接定義在類的一對 裡面 區域性變數 宣告在方法內 方法形參 塊內 構造器形參 構造器內部的變數 2.2 關於許可權修飾符的不同 屬性...