我有一個類稱爲日期:如何從另一個班級獲得私人領域?
public class Date{
private String monthAndDate;
public Date(String inputMonthAndDate){
monthAndDate = inputMonthAndDate;
}
}
我叫病人另一個類。是否有可能從Date類中獲取monthAndDate的語法並將其傳遞給類Patient中的私有字段?
謝謝。
我有一個類稱爲日期:如何從另一個班級獲得私人領域?
public class Date{
private String monthAndDate;
public Date(String inputMonthAndDate){
monthAndDate = inputMonthAndDate;
}
}
我叫病人另一個類。是否有可能從Date類中獲取monthAndDate的語法並將其傳遞給類Patient中的私有字段?
謝謝。
注意:您應該避免命名具有標準JDK使用名稱的類。
要回答你的問題,你可以簡單地在你的日期類提供一個getter:
public class Date{
private String monthAndDate;
public Date(String inputMonthAndDate){
monthAndDate = inputMonthAndDate;
}
public String getMonthAndDate(){
return monthAndDate;
}
}
現在,您可以撥打:
String s = someDate.getMonthDate();
無需爲您的Date
類添加吸氣劑。這是點的一部分,使字段私有。
是啊......我只是困惑。對不起,問這個問題。 :P –
您試圖違反數據封裝概念。 private
字段/方法只能在本地在類中訪問,並且不會被其他類使用。
添加訪問器方法,例如getMonthAndadte()
返回Date
類中的monthAndDate
值。
您可以輕鬆地反射做到這一點,但是這將只有在Date
不受您的控制,沒有合法的API來執行此操作,並且您在考慮到所有後果後絕對必須採取措施的情況下才能推薦。
訪問您的私人領域示例場景是這樣的代碼中:
public class Date
{
private String monthAndDate;
public Date(String inputMonthAndDate)
{
monthAndDate = inputMonthAndDate;
}
public String getMonthAndDate()
{
return monthAndDate;
}
}
public class Parent
{
private yetAnotherField;
Parent()
{
this.yetAnotherField = (new Date("some string")).getMonthAndDate();
}
}
不與private
但你有沒有考慮使用「包私人」?如果某些東西是「私人包裝」,那麼它只能被同一包裝中的其他類所看到。令人困惑的是它沒有關鍵字......這是默認範圍。
你可以使用Reflection,但提供一個getter方法將是更好的解決方案。
如果你想從另一個類訪問它們,你爲什麼讓他們私人擺在首位? – NullUserException