Newsgroup: it.comp.java
Titolo: ereditarietà

Se due classi ereditano da una stessa classe (magari astratta), è
possibile settare un valore nella classe padre (es. padre.setVar1(5) )
e fare in modo che questo sia già presente quando si istanziano le
classi figlio ?
Sinceramente penso di no, ma chiede per sicurezza.
Grazie

Grazie
Sì può fare: ad esempio facendo il modo che il costruttore di default della 
classe padre inizializzi il valore di Var ad un valore predefinito - una 
variabile statica , ad esempio - settabile in qualunque momento direttamente 
sul padre.
Scorpio. 



che vuol dire "un valore nella classe padre"?
forse intendi una proprietà privata? se non è privata la proprietà
viene regolarmente ereditata e appartiene anche alle classi figlie.

 ha scritto nel messaggionews:315e77af-432c-430a...@w28g2000hsf.googlegroups.com...

Sì, il costruttore sembra un buona idea, però è semplicemente una
inizializzazione ... bisognerebbe capire il perchè della domanda.
ciao
mc

mc
Naturalmente, da un punto di vista pratico le ragioni possono essere 
diversissime... io mi sono limitato ad una risposta "teorica" (per quel che 
vale come teoria....)
Scorpio 

 ha scritto nel messaggionews:49b3b4d4-3979-4ecf...@e1g2000hsh.googlegroups.com...

Vorrei avere una classe padre astratta che poi verrà ereditata da
diverse classi figlie e, prima di istanziare le classi figlie settando
una certa proprietà nella classe padre (es: padre.setVar1("prova"); ),
tutte le classi figlie una volta istanziate hanno la variabile Var1
settata su "prova". Per questo però non posso usare il costruttore,
dipenderà dall'ambiente di lavoro il valore (tutte le volte è
differente).
Thanks

 Thanks
n
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Usa un singleton
hai un risponditore random? :-)


Devo confessarti che ero in dubbio se rispondere o meno visto anche che il
mio suggerimento potrebbe essere completamente sballato.
Il punto e' non si capisce se il problema e' veramente un problema di
ereditarieta' o di runtime, vista l'affermazione "una volta istanziate"
credo sia troppo poco chiaro il suo problema, ma magari mi sbaglio e non lo
capisco io e chiedo umilmente venia ;-)
ciauz Nicola


 writes:
A> Vorrei avere una classe padre astratta che poi verrà ereditata da
A rigore si dice "estesa". Sono gli 'oggetti' (metodi & attributi)
pubblici protetti e, talvolta, con visibilità di default ad essere
ereditati.
A> diverse classi figlie e, prima di istanziare le classi figlie
A> settando una certa proprietà nella classe padre (es:
A> padre.setVar1("prova"); ), tutte le classi figlie una volta
A> istanziate hanno la variabile Var1 settata su "prova".
Una classe astratta non può essere istanziata.
Se poi tu dici, avendo una istanza "padre" di tipo Padre (Padre è una
classe estesa da Figlio1... Figlion) e facendo "padre.setVar1("prova");
voglio che facendo 
figlio = new Figlio1;
System.out.print(figlio.getVar1());
forse fai un po' di confusione sull'ereditarietà e ti conviene ripassare
per bene il manuale.
Perché quello che vuoi fare è una cosa che ha senso e si fa (parametriz-
zare la  costruzione delle varie istanze). Ma  non ha a che  fare con la
ereditarietà.
-- 
 /\           ___                                    Ubuntu: ancient
/___/\_|_|\_|__|___Gian Uberto Lauri_____               African word
  //--\| | \|  |   Integralista GNUslamico            meaning "I can
\/                   e coltivatore diretto               not install
                               di software                   Debian"
a Cesare avrei detto di scrivermi | I would have told Caesar to write
a 
fn...@rat.vg
                    | me at 
fn...@rat.vg

concordo e sottoscrivo, si sta tentando di fare qualcosa che non è in
linea con gli insegnamenti dell' OO, a mio modesto parere, stai
interpretando in maniera errata il concetto di ereditarietà.

 Thanks
Perchè non cloni un'istanza della "classe figlia" anzichè instanziarla ?
Inizialmente la imposti come meglio ti aggrada e poi ... .clone().
Se hai problemi di "reperibilità" dell'istanza da clonare puoi seguire
il suggerimento del Singleton che ti hanno già fatto e reperire la copia
da clonare, appunto, con il singleton.
p.es
: 
Padre.setVar1("ciccio");
Figlio.getSingleton()
    "gestione del singleton, se null --> istanzia con Var1(=ciccio) e
ritorna la copia 'master' "
e invece del costruttore Figlio () usi
     Figlio.getSingleton().clone()
Aggiungi variazioni e fattorizzazioni a piacere (
p.es
. getSingleton()
parametrica).
Ciao,
    Davide
PS : ehi, che schifo di newsreader !!! non indenta e non colora il
codice java !!!
---
Ing. Davide Grandi
davide...@mclink.it