也就是覆盖了父类的f函数.因此结果一样都是98.0 而子类中的g函数因为是静态函数,虽然其参数与父类中的静态g函数一样,但是分别是两个函数,在子类中没有被重写,所以在最后一个输出中调用的是父类的g函数,输出9.也就是说静态函数是不会被重写的,覆盖的.g...
java代码最后一个输出为什么是9不是12?
子类中的f函数因为与父类中的f函数参数一样,所以我们说子类的f函数重写了父类的f函数,也就是覆盖了父类的f函数.因此结果一样都是98.0
而子类中的g函数因为是静态函数,虽然其参数与父类中的静态g函数一样,但是分别是两个函数,在子类中没有被重写,
所以在最后一个输出中调用的是父类的g函数,输出9.也就是说静态函数是不会被重写的,覆盖的.
2020-10-07
g是一个静态方法,对于静态方法,调用哪个方法是在编译时根据变量的类型绑定的,而不是运行时绑定的。a的类型是A,所以调用的是A.g,返回的是3的平方9。
补充:
如果有A a2=null;那a2.g(3);也会返回9。理由上面讲了。2020-10-07