|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2002
Città: Latina - Roma
Messaggi: 3785
|
Help per Java! una mano pls! :)
Mi sapreste descrivere cosa sono il side effect e il polimorfismo in Java magari con un esempio in codice ? Ve ne sarei davvero grato!
![]()
__________________
E6600@3.6ghz@1.29V - H2O cooled: Ybris Evo One - Lunasio X-Force V3 - NewJet 1700 -> min:32°|max: 48° - Gigabyte P35-DS4 rev1.0 - 2x1gb Team Group Elite 6400 - ExperTVision 8800GT 1gb - Samsung 500Gb - Sony SDM-HS95 - Enermax Liberty 500W - 3com OfficeConnect Wireless Router - Fastweb 6Mb - Trattative: "search" ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
il polimorfismo è un concetto legato alla programmazione a oggetti e in particolare all'ereditarietà delle classi.
cmq esistono due tipi di polimorfismo che io definirei statico e dinamico. il polimorfismo statico è l'overloading delle funzioni (c'è anche in altri linguaggi) ovvero la possibilità di avere più funzioni con lo stesso nome ma con parametri differenti. il compilatore, in base ai parametri, sceglie quale funzione viene eseguita. il polimorfismo dinamico riguarda invece le classi (penso sia quello che intendi tu) e si verifica quando una sottoclasse contiene un metodo del tutto identico (come nome e parametri) a quello della superclasse. in questo caso è in fase di esecuzione che viene scelto il metodo da invocare in base all'oggetto a cui appartiene. se ad esempio hai una classe veicoli e una sottoclasse automobile e in automobili hai il metodo viaggia() così come in veicoli è in fase di esecuzione che l'ambiente dovrà scegliere quale dei due metodi eseguire su un determinato oggetto. la scelta avviene a seconda della classe istanziata dall'oggetto. se ad esempio a trabicolo assegni un oggetto di tipo automobili allora eseguirai il metodo di quella classe, se successivamente a trabicolo assegnerai un oggetto veicoli allora l'invocazione di viaggia() riguarderà il metodo definito in veicoli. spero di essere stato chiaro ma ho paura di no... |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Quote:
Codice:
class Veicolo { public Veicolo(){} void viaggia(){ System.out.println("Il Veicolo viaggia!"); } public static void main(String[] args){ Veicolo trabiccolo = new Veicolo(); Automobile trabiccolo2 = new Automobile(); Veicolo trabiccolo3 = new Automobile(); System.out.println("----------------"); trabiccolo.viaggia(); //((Automobile)trabiccolo).viaggia(); questa NON è possibile! Si ha un ClassCastException a runtime System.out.println("----------------"); trabiccolo2.viaggia(); ((Veicolo)trabiccolo2).viaggia(); System.out.println("----------------"); trabiccolo3.viaggia(); ((Veicolo)trabiccolo3).viaggia(); ((Automobile)trabiccolo3).viaggia(); } class Automobile extends Veicolo{ public Automobile(){} void viaggia(){ System.out.println("L'Automobile viaggia!"); } } ---------------- Il Veicolo viaggia! ---------------- L'Automobile viaggia! L'Automobile viaggia! ---------------- L'Automobile viaggia! L'Automobile viaggia! L'Automobile viaggia! Ultima modifica di cn73 : 10-09-2003 alle 15:47. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2002
Città: Latina - Roma
Messaggi: 3785
|
Ragazzi..penso di aver capito...comunque se non erro la differenza tra Polimorfismo e overloading riesiede proprio nel late e early binding...giusto ?
__________________
E6600@3.6ghz@1.29V - H2O cooled: Ybris Evo One - Lunasio X-Force V3 - NewJet 1700 -> min:32°|max: 48° - Gigabyte P35-DS4 rev1.0 - 2x1gb Team Group Elite 6400 - ExperTVision 8800GT 1gb - Samsung 500Gb - Sony SDM-HS95 - Enermax Liberty 500W - 3com OfficeConnect Wireless Router - Fastweb 6Mb - Trattative: "search" ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:36.