在學習物件導向程式語言的時候,每個人一定都有寫到getter與setter的經驗。所謂的getter以及setter是用來作為物件的私有(private)變數或屬性(field)的公用存取介面(public access interface)
在學習物件導向程式語言的時候,每個人一定都有寫到getter與setter的經驗。所謂的getter以及setter是用來作為物件的私有(private)變數或屬性(field)的公用存取介面(public access interface),也就是宣告兩個public method,一個為getter用來取得private varible,另一個則為setter用來設定private varible。這樣的設計目的是為了避免private variable被不當使用,像是可以在setter的設定時可加入一些條件判別或處理來避免變數被設成unacceptable value。
以下舉一個簡單的Java範例:
public class HelloClass {
//private variable
private String hello = "";
//setter
public void setHello(String val) {
if(val!="") //prevent empty string
this.hello = val;
}
//getter
public String getHello() {
return this.hello;
}
//main function
public static void main(String[] args) {
HelloClass hello = new HelloClass(); //new HelloClass object
hello.setHello("Hello world!"); //set the private variable
System.out.println(hello.getHello()); //get the private variable and print out
}
}
心得感想:
getter與setter的概念其實在一開始學習OO時就已經開始使用了,只是也許有人並不知道這樣的函式被稱為getter與setter。像我也是後來在學習actionscript的時候才知道這個term。
會想寫這樣主題的動機主要是要引導出下一篇關於Python所用的getter與setter,其相較於C++與JAVA有一些特別的地方,我會在下篇"[Python] 關於getter與setter"做進一步的介紹的。