Newsgroup: it.comp.java
Titolo: Ereditarieta', semplice domanda

Ciao a tutti.
Considerate le seguenti tre classi:
public class A {
  public void write(){
    System.out.println("SONO PADRE A");
  }
}
public class B extends A{
  public void write(){
    System.out.println("SONO FIGLIO B");
  }
  public static void main(String args[]){
    A a = new B();
    C.print(a);
  }
}
public class C {
   public static void print(A a){
      a.write();
    }
}
B estende A e sovrascrive il suo metodo write; nel suo main, B si
instanzia passandosi come argomento al metodo statico di C, che a questo
punto stampa "SONO FIGLIO B". C'e' un qualche modo per far stampare a C
"SONO PADRE A" passandogli comunque un'istanza di B ? Insomma, C, che si
ritrova fra le mani un'istanza di B, come può richiamare il metodo write
del padre di B ?
Secondo m'è non è possibile: come farebbe C a capire qual'è il padre di B
se questa, ipoteticamente, ne avesse molteplici e non solo quindi l'A
dell'esempio ?
Se qualcuno ha un secondo da perderci sopra....grazie.
***************************************
messaggio inviato tramite HostSearch.it
---------------------------------------
---> 
http://www.hostsearch.it/newsgroup
***************************************

dell'esempio ?
Si può capire con la reflection, ma non ti servirebbe perché potresti 
invocare solo il write() di B cioè dell'oggetto "a run-time" (Dynamic 
binding).
Qualcuno (ad es. Cristiano S. ;-) in passato lo ha spiegato sicuramente 
meglio: prova a cercare nei vecchi messaggi.
http://groups.google.com/
Il caso di avere molteplici padri, in Java, non si dà: non esiste 
ereditarietà multipla di implementazione.
E' una scelta fatta proprio per evitare "magagne" del genere.
Al massimo puoi iterare il problema chiedendoti come comportarsi nei 
confronti... del nonno ;-)
HTH
-- 
Ciao
	Fabrizio C.

 confronti... del nonno ;-)
Mi sono espresso male: intendevo una cosa del tipo:
Classe A con metodo write();
Classe B extends A che sovrascrive write() di A;
Classe C extends B che sovrascrive write() di B
...e così via.
Ciao e grazie.


...e così via.
Sì, potevo immaginare: era solo per puntualizzare :-)
Poi, in fondo, si può dire che A è il nonno di C, no? ;-)
-- 
Ciao
	Fabrizio C.

 Poi, in fondo, si può dire che A è il nonno di C, no? ;-)
E C++, naturalmente, e' il nonno di Java. :)
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

Mi rispondo da solo, una cosa del genere funziona:
public class C{
  public static void print(A a){
  //qui arriva un'istanza di B, superclass A....    
  Class superClass = a.getClass  ().getSuperclass();
      Object object = superClass.newInstance();
      Method method = superClass.getMethod("write", null);
      method.invoke(object, null);
}
Dovrebbe stampare "SONO PADRE A", con la dovuta gestione delle
eccezioni....grazie per il suggerimento sull'introspezione.


la butto giů alla brutta... ma cosě non funziona uguale?! (non sparatemi se
scrivo ca..ate ;-)
public class C {
   public static void print(A a) {
       ((A)a).write( );
   }
}
Senza preoccuparti di eccezioni sulla reflection, senza usare la reflection
(che č lenta di bestia)...
...senza sbatterti troppo insomma... :)
Ciaoz...
Amedeo.
"Diego" <di1r...@SPAMlibero.it> wrote in message
news:at7siq$u3h$1...@news.flashnet.it...


la butto giů alla brutta... ma cosě non funziona uguale?!
[CUT]
Prova e facci sapere <g>
-- 
Ciao
	Fabrizio C.

eccezioni....grazie per il suggerimento sull'introspezione.
Hai provato?
-- 
Ciao
	Fabrizio C.

 wrote in message
news:MPG.186310a69...@powernews.libero.it...


E C++, naturalmente, e' il nonno di Java. :
Che bella famiglia... :-)
-- 
Ciao
	Fabrizio C.

 Che bella famiglia... :-)
Oh, ci sono pure tanti cugini: ObjectiveC, ConcurrentPascal, piu' uno che 
si chiama come una torre.. ;-)


si chiama come una torre.. ;-)
? mi sfugge
Rhymes

 ? mi sfugge
Eiffel :)


Scusate la mia ignoranza ma se una classe fa l'override di un metodo ci deve
essere un motivo!?!?!?!?
--------------------------------
Inviato via 
http://usenet.libero.it

Eiffel :)
di SmallTalk avete già parlato :) ?
Rhymes

 di SmallTalk avete già parlato :) ?
Be', Smalltalk, insieme Simula, tende ad essere il nonno di tutti i 
linguaggi OO. Ma piu' come idee che non come sintassi e pragmatica de 
linguaggio.
