Why "Mum" in the 2. an 3. output line?
class Mom {
String s ="Mom";
void
test() {
System.out.println(s);
}
void test2() {
System.out.println(s);
}
}
class Child extends Mom {
String s = "Child";
void test2() {
System.out.println(s);
}
}
class Test {
void test(Mom m) {
System.out.println("Mom");
}
void test(Child b) {
System.out.println("Child");
}
public static void main(String[] s) {
Test t = new Test();
Mom m = new Mom();
Child b = new Child();
Mom mb = new Child();
System.out.println("-Inherid-");
m.test(); //Mom
b.test(); //Mom Why1?
mb.test(); //Mom Why2?
System.out.println("-Overidden-");
m.test2(); //Mom
b.test2(); //Child
mb.test2(); //Child - Overridden : Runtrime
System.out.println("-Overloaded-");
t.test(m); //Mom
t.test(b); //Child
t.test(mb); //Mom - Overloaded : Compile time
}
}