[英]Java - Abstract class to contain variables?
讓抽象類定義實例變量是一種好習慣嗎?
public abstract class ExternalScript extends Script {
String source;
public abstract void setSource(String file);
public abstract String getSource();
}
然后子類ExternalJavaScript.class將自動獲取源變量,但是如果所有子類本身都定義了源代碼而不是繼承,我覺得讀代碼更容易。
你有什么建議?
/亞當
我會認為這樣的事情要好得多,因為你要添加一個變量,為什么不限制訪問並使其更清晰呢? 你的吸氣劑/安裝者應該按照他們對錫的說法做。
public abstract class ExternalScript extends Script {
private String source;
public void setSource(String file) {
source = file;
}
public String getSource() {
return source;
}
}
回過頭來回答這個問題,你是否曾經在閱讀它時看看getter / setter代碼的位置? 如果他們都進行了設置,那么在閱讀代碼時你不需要擔心函數的功能。 還有一些其他原因需要考慮:
總是想想你的班級是否真的是一個不同的東西,這應該有助於決定你是否還需要其他東西。
當然..為什么不呢?
為了提高存儲和維護效率,抽象基類只是為了容納兩個或多個類共同的容納行為和數據的便利。 它是一個實現細節。
但請注意,您沒有使用應該使用接口的抽象基類。 請參閱Interface vs Base類
當然。 抽象類的整個想法是它們可以包含一些您需要包含所有子類的行為或數據。 想想WheeledVehicle的簡單例子 - 它應該有一個numWheels成員變量。 您希望所有子類都具有此變量。 請記住,抽象類在開發API時是一個非常有用的功能,因為它們可以確保擴展API的人不會破壞它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.