[Java] 關於getter與setter

在學習物件導向程式語言的時候,每個人一定都有寫到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"做進一步的介紹的。