He leído el tutorial Overriding and Hiding Methods. Y a partir de eso, se reunieron los siguientes:Ocultando los métodos de la superclase
Si una subclase define un método de la clase con la misma firma como método clase en la superclase, el método en la subclase cueros la una en la superclase.
Como tal, hice lo siguiente:
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();
}
}
Lo que no me gusta de este diseño es que append
es todavía visible método de la subclase . En lugar de arrojar el UnsupportedOperationException
, podría haber dejado el cuerpo vacío. Pero ambos se sienten feos.
Dicho esto, ¿hay un mejor enfoque para ocultar los métodos de la superclase?
simplemente para dar énfasis (@Simone tiene la respuesta completa): usted ** ** no deben métodos de anulación de una superclase sin cumplir su contrato. Por cierto, la oración que citó trata sobre los métodos de _clase_ mientras reemplaza un método _instance_ aquí. – kleopatra
@kleopatra, marqué la respuesta que hice porque sentí que esta pregunta no iba a atraer más atención. Todavía no creo que esta pregunta haya sido suficientemente respondida. ¿Tal vez podría proporcionar uno propio? ¡Pareces estar bien informado! : D – mrkhrts
, sé que la pregunta es vieja, pero acabo de encontrar esto, así que ... Normalmente utilizo tu forma de hacer esto, una cosa que también hago es anular los métodos como finales para que la clase no se pueda extender a habilitar ciertas funciones como agregar. –