Я прочитал учебник Методы переопределения и сокрытия .И из этого я получил следующее:
Если подкласс определяет метод класса с той же сигнатурой, что и метод класса в суперклассе, метод в подклассе скрывает один в суперклассе.
Таким образом, я сделал следующее:
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
, я мог бы оставить тело пустым.Но оба чувствуют себя ужасно.
При этом существует ли лучший подход к сокрытию методов суперкласса?