方法分派
- 调用谁的、哪个方法
- 针对方法重载的情况
- 针对方法覆盖的情况
静态分派(编译期确定,根据调用者的声明类型和方法参数类型)
动态分派(运行时确定,依据调用者的实际类型分派)
Demo
import org.junit.Test;
public class DispatchTest {
@Test
public void test(){
SuperClass superClass = new SubClass();
printName(superClass);
}
private void printName(SuperClass superClass){
System.out.println(superClass.getName());
}
private void printName(SubClass subClass){
System.out.println(subClass.getName());
}
}
class SuperClass {
public String getName() {
return "super";
}
}
class SubClass extends SuperClass {
@Override
public String getName() {
return "sub";
}
}