Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

JTip Question

 
Jim Hall
Ranch Hand
Posts: 162
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
<code><pre>
class Process {
byte b=127;
Process() {
this.methodA();
}
void methodA() {
System.out.println("Process:MethodA() - Value of b is = " + b );
}
public static void main(String [] args) {
Processor p = new Processor();
}
}
class Processor extends Process {
byte b=126;
Processor() {
System.out.println("Processor:Constructor - Value of b = " + b);
}
void methodA() {
System.out.println("Processor:MethodA() - Value of b = " + this.b);
}
}
</pre>
</code>
Can someone explain why the output is 0 and 126.
Thanks
 
Fei Ng
Ranch Hand
Posts: 1245
1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

<code><pre>
class Process {
byte b=127;
Process() {
this.methodA();
}
This method didn't get called
void methodA() {
System.out.println("Process:MethodA() - Value of b is = " + b );
}
public static void main(String [] args) {
Processor p = new Processor();
}
}
class Processor extends Process {
byte b=126;
Processor() {
System.out.println("Processor:Constructor - Value of b = " + b);
}
Instead this method get called
void methodA() {
System.out.println("Processor:MethodA() - Value of b = " + this.b);
}
}
</pre>
</code>
Can someone explain why the output is 0 and 126.

Since Processor.b didn't get a chance to init thats why output is 0.
Since at runtime the actually Object's method get called thats why Processor method get called.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic