qual è il punto di sovraccarico del metodo? [duplicare]

-1

Sto seguendo un libro di testo in cui mi sono appena imbattuto nel sovraccarico di metodi. Descrive brevemente il metodo di overloading: quando lo stesso nome del metodo viene utilizzato con diversi parametri, viene chiamato overloading del metodo.

Da quanto ho imparato finora in OOP è che se voglio comportamenti diversi da un oggetto tramite metodi, dovrei usare nomi di metodi diversi che meglio indicano il comportamento, quindi perché dovrei preoccuparmi di sovraccaricare il metodo in primo luogo ?

    
posta David 31.05.2014 - 23:10
fonte

2 risposte

4

L'overloading del metodo viene in genere utilizzato per varianti dello stesso comportamento:

  • Fai la stessa cosa per diversi tipi

  • Una versione predefinita con un numero inferiore di parametri e una versione complessa che consente un maggiore controllo tramite parametri aggiuntivi.

Un buon esempio sono i vari metodi massicciamente sovraccaricati in java.util.Arrays : fanno la stessa cosa sugli array dei vari tipi primitivi, oltre a fornire varianti che, ad es. operare solo su una parte dell'array, o fare cose come l'ordinamento con Comparator piuttosto che con l'ordinamento naturale.

    
risposta data 31.05.2014 - 23:31
fonte
1

Ottieni coerenza nella denominazione.     Il vero problema è la memoria umana per i nomi dei metodi, giusto? troviamo più facile ricordare i nomi comunemente utilizzati e l'economia di digitazione, consentendo nomi di metodo più brevi? meno nomi diversi significano (matematicamente) che il nome stesso porta meno informazioni.

Di seguito è lo scenario ::

function Person FindPerson(string nameOfPerson) { ... }
function Person FindPerson(date dateOfBirth) { ... }
function Person FindPerson(int age, string dogsName) { ... }

è preferibile alle funzioni "nominate in modo univoco":

function Person FindPersonByName(string nameOfPerson) { ... }
function Person FindPersonByDOB(date dateOfBirth) { ... }
function Person FindPersonByAgeAndDogsName(int age, string dogsName) { ... }

In questo modo il programmatore che scrive un client che chiama queste funzioni può operare a un livello più elevato di pensiero concettuale ("Ho bisogno di trovare una persona") e non ha bisogno di ricordare - il compilatore verrà lasciato per corrispondere al sovraccarico applicabile .

    
risposta data 01.06.2014 - 08:31
fonte

Leggi altre domande sui tag