我讀過Overriding and Hiding Methods教程。並從我收集的以下內容:超類的隱藏方法
如果子類定義具有相同簽名作爲超一 類方法類方法,在子類皮的方法的 一個超類。
因此,我做了以下內容:
import javax.swing.JTextArea;
public final class JWrappedLabel extends JTextArea{
private static final long serialVersionUID = -844167470113830283L;
public JWrappedLabel(final String text){
super(text);
setOpaque(false);
setEditable(false);
setLineWrap(true);
setWrapStyleWord(true);
}
@Override
public void append(final String s){
throw new UnsupportedOperationException();
}
}
我不喜歡這樣的設計是什麼append
仍然是子類的可見方法。而不是拋出UnsupportedOperationException
,我可以把身體留空。但都感到難看。
話雖這麼說,有沒有隱藏超類的方法更好的方法?
只是強調(@Simone有完整的答案):你**絕不能**超類的覆蓋方法沒有履行合同。順便說一句,你引用的句子是關於_class_方法,而你在這裏覆蓋_instance_方法。 – kleopatra
@kleopatra,我標記了我做的答案,因爲我覺得這個問題不會引起更多的關注。我仍然不覺得這個問題已經得到了充分的回答。也許你可以提供一個你自己的?你似乎是知識淵博的! :d – mrkhrts
我知道這個問題是舊的,但我剛剛發現這個如此... 我通常使用的方式做到這一點,一兩件事,我也做的是重載方法爲final,這樣的類不能被擴展到啓用某些功能作爲追加功能。 –