Skip to main content

Qual è il metodo prevalente?

Il metodo prevalente viene utilizzato nella programmazione orientata agli oggetti all'interno di una gerarchia di ereditarietà e si verifica quando un metodo definito in una superclasse viene ridefinito in una sottoclasse.Di solito, il metodo sottoclasse fa qualcosa di diverso dal metodo superclasse o si espande su una capacità della superclasse, ma questo non deve essere il caso.Il prevalente del metodo si verifica ogni volta che un metodo superclasse viene ridefinito in una sottoclasse, indipendentemente dal contenuto del metodo ridefinito.Le firme del metodo ridefinito devono essere esattamente le stesse.

Ad esempio, una classe A potrebbe contenere un metodo chiamato dosomething e questo metodo non richiede parametri di input.Inoltre, le classi B e C potrebbero essere le sottoclassi della classe A. La classe B potrebbe contenere un metodo chiamato dosomething, che non richiede parametri di input e la classe C potrebbe contenere un metodo Dosomething che prende un numero come parametro di input.In questo esempio, solo la classe B dimostrerebbe il metodo prevalente, perché il suo metodo dosomething ha la stessa firma del metodo della sua superclasse, Classe A. Il metodo Dosomething nella classe C, d'altra parte, dimostra il sovraccarico del metodo perché crea un metodo completamente nuovo.

L'eredità virtuale in C ++ è un altro esempio di prevalenza del metodo.I metodi virtuali nelle superclassi potrebbero o non potrebbero essere implementati, ma qualsiasi definizione di sottoclasse di esse è un'istanza di metodo prevalente.Quando un metodo viene annullato in una sottoclasse, il metodo della superclasse non viene chiamato se non viene invocato esplicitamente.Si dice spesso che questo modo specifico di chiamare un metodo sovrascritto nasconda l'implementazione della superclasse. Se il metodo prevalente sia molto flessibile, non tutti i metodi possono essere sovrascritti e ci sono momenti in cui questa rigidità potrebbe essere preferibile.Sia in Java che in C ++, le parole chiave specifiche possono essere applicate nelle firme del metodo per impedire che un metodo venga sovrascritto in una sottoclasse.Per fare questo, Java utilizza la parola chiave finale e C ++ utilizza la parola chiave const.Prevenire il prevalenza del metodo può essere utile se una particolare funzione dovrebbe essere sempre invariata in un albero ereditario.

In generale, non dovrebbero essere necessari semplici metodi che ottengono piccoli pezzi di dati.I casi che tendono a beneficiare di più dall'override sono quando una sottoclasse mira ad aggiungere funzionalità a un metodo superclasse senza creare un metodo completamente nuovo per farlo.Casi insoliti in cui un metodo deve essere completamente rifatto per un tipo specifico di oggetto potrebbero anche beneficiare di questa tecnica.Ogni volta che un metodo viene ignorato, è importante che il programmatore commenta adeguatamente sia i metodi superclasse che la sottoclasse.Idealmente, questi commenti dovrebbero chiarire cosa fa ogni variante del metodo, nonché come e perché differiscono.