新学 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. 初学请教一下原因.