我試圖得到比迄今爲止能夠更好的理解......它是爲了幫助我上課,但沒有完成任何特定的家庭作業;我正在尋找更多的概念信息,這些信息在我的教科書或教程中找不到。在純粹的理論層面上,我明白了爲什麼封裝對面向對象編程來說是強大的,但需要更好地理解什麼,特別是正在發生。我一直在困惑自己關於數據流的路徑,並且想知道我們從哪裏獲取數據和設置數據。希望這不是「沒有愚蠢問題」規則的例外。在Java中獲取和設置方法。他們如何工作?
考慮:
public class Employee
{
private int empNum;
public int getEmpNum()
{ return empNum; }
public void setEmpNum(int Emp)
{ empNum = emp; }
}
我的這種解釋:使用int Emp
從某處過去了,我們在set...
方法設置的聲明empNum變量。然後,我們get...
該變量並將其返回給調用方法。這是一個很好的理解?
進一步考慮:
import.javax.*
public class CreateEmp
{
public static void main(String[] args)
{
int ssn;
ssn = JOptionPane.showInputDialog(null,"enter ssn");
Employee newEmp = new Employee(123456789);
JOptionPane.showMessageDialog(null,"Employee ID " + newEmp.getEmpNum);
}
}
有了這個類,因爲在聲明new Employee(123456789)
自動地發送該值到set...
方法我並不需要顯式set
一個變量。 Employee方法中的return
將結果值返回給調用方法,並使該變量可用,在本例中爲我的對話框輸出。我有處理嗎?
這裏是我困惑的地方。根據我上面提到的理解 - 這可能是關閉的 - 我永遠不能決定放置邏輯的最佳位置。例如:我會在Employee
類中放置「輸入員工編號」對話框,只有傳遞給方法的參數爲null時纔會運行條件。在我看來,就我所瞭解的數據流而言,課程的目的是獲得一個員工編號。如果沒有提供默認值,則需要創建一個。我不確定這個想法是否是最佳實踐,或者如果我以後爲自己設置了麻煩。
我很想聽聽關於我是否正確理解發生了什麼的一些想法。
UI不應該在Employee類中,因爲員工不在乎它如何獲取信息,也不應該這樣做。 Java中幾乎沒有什麼是「自動的」:構造函數參數值被設置爲實例值的唯一方法是如果實例值是構造函數設置它的值:您的示例除了缺省構造函數以外什麼也沒有,因此嘗試使用a實例化具有參數的ctor將無法編譯。 – 2012-04-01 22:06:56
我認爲這是我感到有點困惑的地方,可能是因爲我一直是程序編程人員,直到現在。 get-set組合與UI不同,在我看來,UI創建一個值,將其發送到get-set,然後將其返回到UI。爲什麼不跳過get-set並使用UI中的值?我知道它與抽象有關,但我們創建的簡單骰子,卡片和員工程序可能僅僅是太簡陋而無法爲我製作這種凝膠。 – dwwilson66 2012-04-02 00:09:05