I understand that by extending Parent, Child inherits "method2()". When the method is called in main("p.method2()"), I understand that at run-time it is determined by the JVM that the underlying object which p refers to (of type Child) has its "method2()" called. Standard polymorphic call. Once the inherited "method2()" starts executing, and the call to "method1()" is made, what I don't understand is why "method1()" from the Parent class is used instead of "method1()" from the Child class. Can anybody shed some light on why the result of this code was the following: Parent's method2() Parent's method1() I was expecting this: Parent's method2 Child's method1 Thanks, Cliff [ January 09, 2004: Message edited by: Cliff DeRose ]
Joined: Jul 02, 2002
Cliff, Private methods are not inherited and are not overridden. The method1 in the child class does not override the method1 in the parent class.
Dan Chisholm<br />SCJP 1.4<br /> <br /><a href="http://www.danchisholm.net/" target="_blank" rel="nofollow">Try my mock exam.</a>
Joined: Jan 08, 2004
So method1() in the Parent class and method1() in the Child class are two totally distinct things as viewed by the compiler? Is that correct? method1() in the Child class would be like making a new method specific only to the Child class - it has no relation at all to the Parent class? Cliff
Joined: Nov 28, 2001
That's right there is no relation at all between the two methods because a private method cannot be overridden... Kristof