View Full Version : [JAVA] definizione di java.awt.window e java.awt.frame
mad_hhatter
31-05-2007, 17:45
Sto leggendo la documentazione delle classi java.awt.window e java.awt.frame.
Frame estende Window, ma... un costruttore di Window prende come argomento un Frame... come è possibile? Frame non esiste finchè non è definita Window, ma Window è definita usando Frame... come è possibile questo??
quale regola del linguaggio sto dimenticando?
Sto leggendo la documentazione delle classi java.awt.window e java.awt.frame.
Frame estende Window, ma... un costruttore di Window prende come argomento un Frame... come è possibile? Frame non esiste finchè non è definita Window, ma Window è definita usando Frame... come è possibile questo??Se leggi bene il parametro Frame o Window che c'è nei vari costruttori di Window è il "owner".
mad_hhatter
31-05-2007, 17:50
l'unico modo che mi viene in mente è il seguente escamotage:
creo un file Window.java con scritto
"
class Window {}
"
compilo
creo un file Frame.java con scritto:
"
class Frame extends Window {}
"
compilo
e ora modifico Window.java aggiungendo un costruttore che chieda un Frame...
ma è un modo un po' sporco di fare le cose... no?
mad_hhatter
31-05-2007, 17:52
Se leggi bene il parametro Frame o Window che c'è nei vari costruttori di Window è il "owner".
si, ma tecnicamente come faccio a definire la classe A che necessita della classe B, la quale classe B è una sottoclasse di A... cioè, come è possibile?
mad_hhatter
31-05-2007, 17:54
Se leggi bene il parametro Frame o Window che c'è nei vari costruttori di Window è il "owner".
mi sono espresso male... sto parlando di DEFINIZIONE della classe, non di creazione di un oggetto di quella classe
Dai una passata di google per "compilers, resolving circularity". Trovi un bel mucchio di quei magnifici documenti tutti pieni di letterine greco-etrusche le quali dimostrano inequivocabilmente "che si può fare". Io mi fido :D.
mad_hhatter
01-06-2007, 09:42
spulcerò bene google per ora ho dato solo una veloce occhiata senza trovare materiale molto utile, il problema è che questo
//file Poldo.java
class Poldo {
Poldo(Ciccio c) {}
}
//file Ciccio.java
class Ciccio {
Ciccio(Poldo p) {}
}
compila, mentre questo:
//file Poldo.java
class Poldo extends Ciccio {
Poldo(Ciccio c) {}
}
//file Ciccio.java
class Ciccio {
Ciccio(Poldo p) {}
}
non compila!
//file Poldo.java
class Poldo extends Ciccio {
Poldo(Ciccio c) {}
}
//file Ciccio.java
class Ciccio {
Ciccio(Poldo p) {}
}
non compila!Certo che non compila ... ma non per quello che pensi tu.
Se Poldo estende Ciccio, allora il costruttore di Poldo dovrebbe chiamare il super-costruttore di Ciccio. Il compilatore infatti inserisce per default una chiamata super().
Peccato che .... Ciccio abbia un unico costruttore che ha come parametro Poldo e quindi NON ha un costruttore senza argomenti!!
Questi sono i concetti "base" dei costruttori .....
mad_hhatter
01-06-2007, 10:07
ma per la pupazza!!!!!!!!!!!
come al solito guardi la pagliuzza nell'occhio del tuo vicino e non ti accorgi della trave nel tuo... come ca...pperi ho fatto a dimenticarmi del costruttore di default??????????????
grazie andbin, mi hai restituito il sonno :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.