public class StaticDispatch {
static abstract class Human{

}
static class Man extends Human{

}
static class Woman extends Human{

}
public void sayHello(Human guy) {
System.out.println("hello , guy!");
}
public void sayHello(Man guy) {
System.out.println("hello , gentle!");
}
public void sayHello(Woman guy) {
System.out.println("hello , ladly!");
}
public static void main(String[] args) {
Human man = new Man();
Human woman = new Woman();
StaticDispatch sr = new StaticDispatch();
sr.sayHello(man);
sr.sayHello(woman);
}
}
"相信对"java编程稍有经验的程序员看完程序后都能得到正确的结果",摘自周大神的《深入理解Java虚拟机》,有小伙伴想挑战一下么?