Pages: [1]   Go Down
Print
Author Topic: Scelta metodi overloaded/overridden  (Read 402 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
alex180788
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 422


« on: 16-09-2014, 17:52:16 »

Nell esempio mostrato alla fine delle dispense su Ocaml, ho i seguenti dubbi

c#equals sc --> metodo equals 1 della classe C
In questo caso mi viene da pensare che a compile time viene selezionato il metodo equals1 della classe C in quanto c:C, però mi viene il dubbio che questo generi un errore. La signature di questo metodo è

equals (other:C):Boolean

E se ho capito bene (correggetemi se sbaglio), in questo caso poichè SC è un sottotipo di C (oltre ad essere una sua sottoclasse) possiamo usare una istanza di SC al posto di 'other'... Ma poichè nella firma di questo metodo è esplicitamente indicato che il tipo del parametro è C, il suddetto upcast non dovrebbe essere esplicito nella invocazione? (Come avveniva per bumpd(p:point) )

La stessa domanda la pongo nel caso della scelta di equals1 in

c'#equals sc --> metodo equals1 della classe SC

In generale, in questo tipo di esercizio posso fare il seguente ragionamento?

obj#m arg

Se ho più metodi "m" overloaded, scelgo il metodo in base alla classe con cui obj ed arg sono dichiarati (val mutable obj = new ..), considerando anche che il tipo di arg può essere un sottotipo per il tipo specificato per l'argomento di m.
Poi, se ho più metodi "m" overridden, scelgo quale usare in base alla firma considerando i tipi a runtime.


Logged

Codice etico e di pratica professionale dello sviluppo software:
..
..
7. Colleghi. Gli sviluppatori software devono essere leali e di supporto nei confronti dei loro colleghi.
...
Pages: [1]   Go Up
Print
Jump to: