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

Class/Sub Class

 
Kalpesh Pandya
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Following code prints answer as -> 5,Sub. I can understand sub but not 5, would anybody explain why?
class Super
{ int index = 5;
public void printVal()
{ System.out.println( "Super" );
}
}
class Sub extends Super
{ int index = 2;
public void printVal()
{ System.out.println( "Sub" );
}
}
public class Runner
{ public static void main( String argv[] )
{ Super sup = new Sub();
System.out.print( sup.index + "," );
sup.printVal();
}
}
 
Jane Griscti
Ranch Hand
Posts: 3141
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Kalpesh,
The Java runtime resolves references to the actual class of the object when invoking methods but uses the declared class when grabbing fields.
In your code, <code>Super sub = new Sub()</code> the declared type of the object <code>sub</code> is <code>Super so <code>System.out.println(sub.index)</code> uses the index field defined in the Super class.
The actual type of the object <code>sub</code> is <code>Sub</code> so <code>sub.printVal()</code> uses the the <code>printVal()</code> defined in the <code>Sub</code> class.
Hope that helps.
------------------
Jane
 
Kalpesh Pandya
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks ! This surely helped me out !
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic