On Thu, Mar 06, 2003 at 10:39:07PM -0500, Chris Pickett wrote:
Hi,
I'm confused by Feng's example ... if you call public invoke_f() from an
instance of C, then isn't it correct for invoke_f() to call the private
B.f() because invoke_f() is a method belonging to B and therefore should
be able to access all private methods and variables? I suppose it comes
I think the idea is that if a method wants to call a private method in
the same class, it must use invokespecial, not invokevirtual.
down to interpreting "this": it seems that the VM's (with the exception of
Jikes RVM) interpret "this" to be an instance of class B whereas Feng is
saying it should be an instance of class C ... I don't think the VM
interpretation is necessarily wrong.
The instruction is invokevirtual. The actual type of this is C.
Following the specification gives A.f().
Cheers,
Chris