|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
[java]caricamento classi derivate
dunque su un libro (non vorrei fare pubblicità subliminale
) ho trovato(sta parlando del momento in cui si esegue una classe Figlia derivata da una classe padre Padre):"La prima cosa che accade quando si esegue Java su Figlia è l'accesso a Figlia.main per cui il caricatore cerca il codice compilato della classe Figlia(che si trova in un file chiamato Figlia.class.Nel processo di caricamento, il caricatore si accorge che la classe è un'estensione di una classe base che viene quindi caricata..." Mi chiedo: viene quindi caricata prima la classe figlia^ giusto? accade sempre così? grazie ciao |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
se non sbaglio la classe figlia ha la "precedenza" sulla classe padre...
se per esempio hanno metodi uguali o si vuole usare qualke metodo della classe padre bisogna usare la parola kiave parent (o qualkosa del genere....)
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
si ok ma io dico a livello di caricamento delle classi.
viene caricata sempre prima la classe figlia? cmq grazie mille per la risposta |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
da una prova che ho fatto al volo con quello del jdk 1.5.0_01 viene caricata prima quella padre. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
grazie (come va??)
ma il classloader non carica prima una o l'altra seguendo qualche spiegazione logica?? Ultima modifica di prazision : 29-05-2005 alle 15:53. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
tutto bene non conosco esattamente le strategie che hanno scelto, di sicuro all'avvio di un'applicazione il "primordial class loader" (quello "nativo") carica un gran numero di classi anche se probabilmente non le utilizzerà (probabilmente si è scelto di peggiorare un po' le performance all'avvio per migliorarle poi in esecuzione). il perchè venga caricato prima il padre e poi il figlio non lo so
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
mmm ok
non mi viene in mente nulla ma non si potrebbero verificare dei 'disastri' (oggi soono unpo' catastrofico) caricando prima l'uno o prima l'altro?? (ti sei fatto di nuovo fregare dalle mie ossessioni cmq grazie |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
non sei convinto, lo so se hai tempo prova a cercare sulle specifiche della jvm, sono pubbliche e il comportamento del classloader dovrebbe essere spiegato lì dentro. per quanto riguarda i potenziali disastri non mi viene in mente nulla, anzi me ne vengono in mente di possibili se così non fosse
|
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
Quote:
quindi dici che è meglio che venga caricata prima la classe padre? ok |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
se trovo il tempo cerco di scrivere un esempietto. N.B. non sono sicuro, sto solo ragionandoci |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
provo anchio stasera, grazie
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
boh, ho solo visto che nello stesso esempio fa vedere come avvenga prima l'inizializzazione static della classe base rispetto all'inizializzazione static della classe derivata (e cmq dalle parole del libro sembra che venga caricata prima la classe derivata , quindi i fatti forse non sono collegati tra di loro)
sto però parlando di cose di cui so poco o nulla ciao (grazie kingv) |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
se pensi che in caso di classi non astratte una "figlia" è una classe che estende e specializza (o in alcuni casi reimplementa) le funzionalità della classe padre, mi sembra logico che prima che venga chiamato il metodo costruttore della figlia deve essere chiamato quello della classe padre, così come le inizializzazioni incluse dentro parti di codice "static". Il rischio sarebbe che potresti far riferimento nella figlia a membri non ancora inizializzati nel padre, con conseguenze sicuramente negative (NullPointer ecc.ecc.) |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 458
|
beh per quanto riguarda le inizializzazioni penso proprio funzioni come dici tu (che è poi come dice il libro)altrimenti si correrebbero seri rischi
era il processo di caricamento che mi lascia dei dubbi ma fa nulla grazie mille Ultima modifica di prazision : 30-05-2005 alle 23:13. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:58.










) ho trovato(sta parlando del momento in cui si esegue una classe Figlia derivata da una classe padre Padre):"La prima cosa che accade quando si esegue Java su Figlia è l'accesso a Figlia.main per cui il caricatore cerca il codice compilato della classe Figlia(che si trova in un file chiamato Figlia.class.








