The below program prints ParentClass a() -
public class StaticBindingTest {
public static void main(String[] args) {
ParentClass p = new ChildClass();
p.a("abc");
}
}
class ParentClass{
public void a(Object o){
System.out.println("ParentClass a()");
}
}
class ChildClass extends ParentClass{
public void a(String s){
System.out.println("ChildClass a()");
}
}
However, if I change ParentClass a() to accept String, the program prints Childclass a(). Why? -
package com.my.test;
public class StaticBindingTest {
public static void main(String[] args) {
ParentClass p = new ChildClass();
p.a("abc");
}
}
class ParentClass{
public void a(String o){
System.out.println("ParentClass a()");
}
}
class ChildClass extends ParentClass{
public void a(String s){
System.out.println("ChildClass a()");
}
}