在 java 的多态调用中,new 的是哪一个类就是调用的哪个类的方法。该说法是否正确?
答案:不正确
例子:
public class Father {
public void say(){
System.out.println("father");
}
public static void action(){
System.out.println ("爸爸打儿子!");
}
}
public class Son extends Father{
public void say() {
System.out.println("son");
}
public static void action(){
System.out.println ("打打!");
}
public static void main(String[] args) {
Father f=new Son();
f.say();
f.action();
}
}
输出:
son
爸爸打儿子!
当调用 say 方法执行的是 Son 的方法,也就是重写的 say 方法
而当调用 action 方法时,执行的是 father 的方法。
普通方法,运用的是动态单分配,是根据 new 的类型确定对象,从而确定调用的方法;
静态方法,运用的是静态多分派