我有一個方法,在一個名爲「PlaceParser」那extends
「ModelParser」類:Java:覆蓋或重載方法?
protected Place parseModel(JSONObject element) ...
的地方是一個子類的模型。 應該將@Override
註釋添加到上面的代碼中嗎?由於該方法具有不同的返回類型,這仍然算作重寫具有相同名稱和參數的基類方法/返回類型是否會改變'簽名'?
的 「ModelParser」 的方法是這樣的 「ModelT」 也延伸 「模式」:
protected abstract ModelT parseModel(JSONObject element)
throws JSONException;
更新@喬恩飛碟雙向:
的基類聲明如下:
public abstract class ModelParser<ModelT extends Model> {
我還沒見過之前的一個類的10樣式聲明。
見http://stackoverflow.com/questions/1882584/what-is-a-covariant-return-type。 (不是*完全*您的情況,因爲'Place'不會擴展'ModelT'。) –
@Eli:我懷疑Place實際上是在擴展ModelT,否則這段代碼就不會編譯。 (或者ModelT是泛型類型參數...) –
@Jon:我已經更新了這個問題 - 如果你能解釋'ModelT'和'Place'之間的關係,我將非常感激。 – Mikaveli