Gegeven zijn de class A en B:
Code: Selecteer alles
class A {
char c;
A () { // first Constructor
c = 'A';
}
A (char c) { // second Constructor
this.c = c;
}
void next () { // method
if (c == 'Z') {
c = 'A';
} else {
c = (char)(c+1);
}
}
class B {
A a1; // declaration
A a2;
B (A a) { // construction
a1 = a;
a2 = new A(a.c);
}
void set (A a) { // method
a1 = a2;
a2 = a;
}
}
en een stukje code van een programma:
Code: Selecteer alles
A a = new A();
B b = new B(a);
PrintStream out = new PrintStream(System.out);
void println (A x, B y) {
out.printf("%c, %c, %c\n", x.c, y.a1.c, y.a2.c);
}
void doSomething () {
println(a, b);
a.next();
println(a, b);
}
gelezen door het programma en geeft deze een beginwaarde aan de variabelen die gedefinieerd zijn. Als ik de code stap voor stap volg dan zou de output van de eerste regel A, A, A moeten zijn.
Dat a.next() c='A' in c='B' verandert is ook wel duidelijk, maar wat de output moet zijn is mij een raadsel.