public class OverLoadTest { public class Top { public void f(Object o) { System.out.println("Top.f(Object) = " + o); } public void f(Object o, String s) { System.out.println("Top.f(Object,String) = " + o + "," + s); } public void f(String s, Object o) { System.out.println("Top.f(String,Object) = " + s + "," + o); } public void f(String s, String s1) {} } public class Bottom extends Top { public void f(Object o) { System.out.println("Bottom.f(Object) = " + o); } public void f(String s) { System.out.println("Bottom.f(String) = " + s); } } public void top() { Top top = new Bottom(); top.f(new java.util.Vector()); top.f("hello"); top.f((Object)"hello"); } public void bottom() { Bottom top = new Bottom(); top.f(new java.util.Vector()); top.f("hello"); top.f((Object)"hello"); } public void f2test() { Top top = new Top(); top.f("bye","bye"); } public static void main(String[] args) { OverLoadTest olt = new OverLoadTest(); if (args.length != 0) olt.top(); else olt.bottom(); olt.f2test(); } }