2011-08-18 1 views
5

Quando la classe genitore ha un metodo add con 2 parametri, Se aggiungiamo il nuovo metodo add con 3 parametri in classe figlio, dovremo chiamare questo come un caricamento eccessivo?Chiarimento in caso di sovraccarico

Grazie in anticipo.

+0

Sì. In contrasto con l'override. – Ingo

risposta

6

Sì, poiché il metodo con due parametri è ereditato dalla sottoclasse, si dice che il metodo con tre parametri sia un metodo di sovraccarico.

class A 
    add(param1, param2) 

class B 
    add(param1, param2)   <-- inherited 
    add(param1, param2, param3) <-- overloading the above method 

Una citazione dal sentiero ufficiale su Overriding and Hiding Methods:

Nota: In una sottoclasse, è possibile sovraccaricare i metodi ereditati dalla superclasse. Tali metodi sovraccarichi non nascondono né sovrascrivono i metodi della superclasse: sono nuovi metodi, unici per la sottoclasse.

(Come probabilmente già capito, il metodo con tre classi non è un metodo prevalente.)

3

Il sovraccarico è quando i metodi hanno lo stesso NOME ma DIFFERENT SIGNATURE. Override - quando i metodi hanno IDENTICI E FIRMA IDENTICA.

5

Sì, questo è sovraccarico. Sarebbe sovraccarico anche se il metodo fosse nella stessa classe del metodo con due parametri.

Si noti che quando vi sono diversi numeri di parametri (e nessun parametro varargs) il sovraccarico è ragionevolmente semplice. Diventa molto più complicato quando si hanno metodi con lo stesso numero di parametri - a quel punto il compilatore deve scegliere il metodo "migliore" tra i metodi candidati applicabili.

noti inoltre che sovraccarico è determinato in fase di compilazione considerando che viene eseguito sostituzione viene determinata in fase di esecuzione in base al tipo reale dell'oggetto il metodo viene chiamato.

1

Se il nome del metodo esiste già ma i parametri sono diversi, allora sì, questo è sovraccarico.

2

Sì sicuramente un sovraccarico e una caratteristica piacevole di eredità.

0

sì ... è un metodo di overload anche se il metodo si trova nella stessa classe.

ps: i assumere il nuovo metodo con tre parametri ha nome identico e tipo restituito