我已經閱讀了很多文章和文章,現在明白靜態方法不能被繼承。爲了解釋我的問題,你可以看看下面的代碼片段:Java - 返回靜態方法的繼承
主類:
public class DataTable {
public String id;
public String date;
public String reserve() throws SQLException {
......
String query="insert into `" + this.getClass().getSimpleName() +"`() values()";
........
String key = ......
.......
return key;
}
}
一個子類:
public class Contact extends DataTable{
public String firstName;
public String lastName;
public String phoneNumber;
...........
}
有了這個,如果我需要在某個時間點預定聯繫人,我需要寫:
Contact contact=new Contact();
String id = contact.reserve();
This Works。但我覺得這不是最佳。對我而言,第一行完全沒用。我會更喜歡寫作:
String id = Contact.reserve();
的代碼將是更清潔和我猜想,它會在運行時使用更少的資源,因爲它不會有,我們真的不需要建立聯繫的一個實例。但爲此,我應該:
- 在每個子類中創建一個特定的reserve()靜態方法,並將其從主類中移除。我真的不認爲它會更好,因爲我會在大量的類中使用完全相同的代碼;
- 或使reserve()靜態在主類中,並允許它訪問調用它的類名,這在java中似乎不可行。
我希望我的問題很清楚。任何想法如何處理?還是應該保持原樣?
我不明白爲什麼你覺得它不是最優的:代碼是乾淨的,如果特定的'reserve'實現需要,你可以創建'Contact'的子類。甚至更好:將其作爲實用方法並傳遞所需的參數,而不是進行這種*'靜態'繼承*。 –