我在這裏問了這個問題(想着我會幫助人們)Creating an unnecessary getter並且發現了我的一大片無知區域。忽略作爲參數傳入的值
在this answer有人向我指出,我在我的代碼的致命缺陷,我引述爲方便:
「這是錯誤的:
public Patient(final String ptNo, final String ptName,
final String procDate, final int procType, final String injury,
final String drName) throws IOException
{
Patient.ptNo = getPtNo();
Patient.ptName = getPtName();
Patient.procDate = getProcDate();
Patient.procType = getProcType();
Patient.injury = getPtNotes();
Patient.drName = getDrName();
}
當你完全忽略作爲參數傳遞的所有值,而是:
public Patient(final String ptNo, final String ptName,
final String procDate, final int procType, final String injury,
final String drName) throws IOException
{
Patient.ptNo = ptNo;
Patient.ptName = ptName;
Patient.procDate = procDate;
Patient.procType = procType;
Patient.injury = injury;
Patient.drName = drName;
}
在這裏,你在設置喲ur class的字段與參數值。「
我不明白,爲什麼值被忽略。我呼籲單獨的方法,例如:
public static String getPtName()
{
System.out.print("Enter patient name: \n");
try
{
ptName = stdin.readLine();
} catch (IOException e)
{
System.out.println("Error! Enter a valid option.");
getPtName();
}
return ptName;
}
所以我認爲這是相同的,用更長的方式寫第二塊代碼。
有人可以向我解釋,爲什麼它不同?從單
編輯 分配的要求。
c)爲接受的患者編號 (字符串),患者姓名(字符串),程序日期(在 格式DD/MM/YY一個字符串),程序的類的構造類型(一個int),傷害描述(一個 字符串)和正在管理患者治療的醫生的醫生名稱。
此構造函數應該初始化與已在已經過去的 相應的參數值的實例變量 - 它應該 也初始化病人筆記實例變量到在最初通過並初始化病人 狀態實例的傷害 描述變量爲'S'(表示新患者有 已安排程序)。
public Patient (String patientNo, String patientName, String procedureDate, int procedureType, String injuryDescription, String doctorName)
d)實施對病人數量,患者姓名, 程序日期,患者筆記和醫生的名字實例變量的訪問器。
哇,通過「公約」一個getter返回去'ptName'不是輸入鍵盤問,這就是問題所在。第二點是你在構造函數中以這種方式將屬性設置爲靜態變量,即使在你創建的實例中也是如此! – nachokk
您對OOP的理解似乎存在許多深刻的差距,這超出了本論壇的討論範圍。找到一些在線教程並閱讀,閱讀和閱讀。 – Bohemian
@EelLee因爲我們有無盡的討論,原來的問題是要求不同的事情。您是否閱讀過問答和評論? –