Dear all,
Perhaps i'm wrong in telling this, but I did'nt see any example of overriding + overloading process in Dan's mock exam.
Perhaps it may be useful to have a look at a case based itself on Dan's mock example:
Overloading:
outputs : ABC
Explanation:
Class A has only one implementation of method m1. Class B overloads method m1 with a second implementation. Class C overloads method m1 with a third implementation. Reference c2 refers to an object of type A so only the A.m1 implementation is accessible.
Overloading + overriding:
Modification of the precedent code:
Output: CCA
Explanation: c1.m1(c1) is easy to understand.
What about c2.m1(c1)?
Like above, c2 refers to an object of type A. So, c2.m1() invokes A.m1() method's signature and return type at the compile time. Compiler looks for a method compatible with argument's type = C.
void m1(A a) {System.out.print("A");} is successfull.
But since c2 refers to an object of type C at runtime, and since this class overrides m1 from class A, this is this method that is finally invoked: so outputs is CA.
Hope this can help,
Cyril.
SCJP 1.4, SCWCD, SCBCD, IBM XML, IBM Websphere 285, IBM Websphere 287