Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Overriding

 
K Anshul
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

output: 1

Object is of class C so C's g() is called(which is the one it inherits from B bcoz does not have it's own g()).
Now this g() calls f(). Shouldn't it call C's f() because underlying object is C. Why does it call B's f() ?

thanks
 
Barry Gaunt
Ranch Hand
Posts: 7729
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Notice that in class B the method f() is private. So C has not overridden B's f(). So in B's g() method, the call to method f() is its own private f().

Another thing to notice is that class A's f() method is private, so B and C can't use that method either.
 
K Anshul
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If i remove private from B's f() then i get the output as 2.
Does that mean first it looks for the overridden f() and if it's not there then B's f() is called?
Can't get the reason for this.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic