Qual è il metodo prevalente?

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 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 assume un numero come parametro di input. In questo esempio, solo la classe B dimostrerebbe il metodo prevalente, perché il suo metodo "Dosomething" ha lo stesso meThod Firma come la 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. Questo modo specifico di chiamare un metodo sovrascritto si dice che "nascondi" l'implementazione della superclasse.

Sebbene il prevalente del metodo sia molto flessibile, non tutti i metodi possono essere ignorati 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, JavaUtilizza la parola chiave "finale" e C ++ utilizza la parola chiave "const". Prevenire il metodo prevalere può essere utile se una particolare funzione dovrebbe essere sempre invariata in un albero ereditario.

In generale, non dovrebbero essere annullati 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.

ALTRE LINGUE

Questo articolo è stato utile? Grazie per il feedback Grazie per il feedback

Come possiamo aiutare? Come possiamo aiutare?