新学 java,关于覆盖和重载
程序代码:
public class cover_equal {
public static void main(String[] args) {
// TODO 自动生成的方法存根
father f=new son();
son f2=new son();
f.test(f2);
}
}
class father {
int radius;
public father() {
// TODO 自动生成的构造函数存根
radius=1;
}
public void test(father f){
System.out.println(1111);
}
}
class son extends father{
public son() {
// TODO 自动生成的构造函数存根
radius=2;
}
public void test(son s){
System.out.println(2222);
}
}这个测试里,f的实际类型是Circle 根据动态绑定运行的将是son类的test函数,而且函数的参数类型也是对的,为什么调用的是father类的test,当然这属于重载而不是覆盖.
如果把son的类中的test函数的参数s改成father类型,这样就办成了覆盖,然后会根据动态绑定运行son类的test. 初学请教一下原因.









