Ho letto il tutorial Overriding and Hiding Methods. E da questo, ho raccolto la seguente:Nascondere i metodi della superclasse
Se una sottoclasse definisce un metodo di classe con la stessa firma come metodo classe nella superclasse, il metodo nella sottoclasse pelli il uno nella superclasse.
Come tale, ho fatto la seguente:
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();
}
}
Quello che non mi piace di questo progetto è che è ancora un append
visibile metodo della sottoclasse . Invece di lanciare il UnsupportedOperationException
, avrei potuto lasciare il corpo vuoto. Ma entrambi si sentono brutti.
Detto questo, esiste un approccio migliore per nascondere i metodi della superclasse?
solo per dare enfasi (@Simone ha la risposta completa): si ** non ** deve metodi di override di una superclasse senza rispettare il suo contratto. A proposito, la frase che hai citato riguarda i metodi _class_ mentre si esegue l'override di un metodo _instance_ qui. – kleopatra
@kleopatra, ho segnato la risposta che ho fatto perché sentivo che questa domanda non avrebbe più attirato l'attenzione. Continuo a non ritenere che questa domanda abbia avuto una risposta sufficiente. Forse potresti fornirne uno tuo? Sembri essere informato! : D – mrkhrts
so che la domanda è vecchia ma ho appena trovato questo così ... Io normalmente uso il tuo modo di fare questo, una cosa che faccio anche è di sovrascrivere i metodi come finale in modo che la classe non possa essere estesa a abilitare determinate funzionalità come accoda. –