【发布时间】:2011-11-17 05:24:49
【问题描述】:
我已阅读 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,我标记了我所做的答案,因为我觉得这个问题不会引起更多关注。我仍然觉得这个问题没有得到充分的回答。也许你可以提供一个你自己的?看来你知识渊博! :D
-
我知道这个问题很老了,但我刚刚发现了这个......我通常用你的方式来做这件事,我也做的一件事是将方法重写为 final 以便类可以' t 被扩展以启用某些功能作为附加。
标签: java swing method-hiding