PDA

View Full Version : Chi mi spiega tale codice?e perchè stampa 11???


cristian8503
14-12-2008, 17:33
Esaminare attentamente il codice fornito di seguito (che è compilabile ed eseguibile
senza errori) e dire quale risultato produce il metodo test() della classe X spiegando
brevemente il ragionamento che ha condotto al risultato.

class A {public long a=4;}
class B extends A {public long b=5;}
class C extends B {public long c=6;}
class D extends C {public void f() {System.out.println(a+b+c);}}

class X {
public void test(){
C b = new D(); b.c = 1;
B c = new D(); c.b = 2;
A d = c; d.a = 3;
D a = (D)d;
a.f();
}
}

Tommo
14-12-2008, 17:49
Mi sa tanto di compito... ma comunque è un compito bastardo :asd:

Bisogna essere veramente infami per chiamare b un oggetto di tipo A, e mettergli un membro di nome c...

||ElChE||88
14-12-2008, 18:02
Mi sa tanto di compito... ma comunque è un compito bastardo :asd:

Bisogna essere veramente infami per chiamare b un oggetto di tipo A, e mettergli un membro di nome c...
Mi ricorda l'esame di C++ fatto qualche giorno fa... ereditarietà "obfuscated - style" e operatori overloadati che fanno l'esatto opposto di quello che dovrebbero fare. :asd:
Esaminare attentamente il codice fornito di seguito (che è compilabile ed eseguibile
senza errori) e dire quale risultato produce il metodo test() della classe X spiegando
brevemente il ragionamento che ha condotto al risultato.
Prova a guardare con attenzione quel che succede in test()... vedrai che non tutte le assegnazioni vengono fatte sullo stesso oggetto.

cionci
14-12-2008, 18:09
http://www.hwupgrade.it/forum/showthread.php?t=1649196