为什么在下面的程序中不将浮点方法视为Derive类?
在下面的程序中,当我在那时将派生对象分配给基类时,base.f(20)考虑了Derive类的int方法,而base.f(20.0f)被认为不是Derive类的float方法。
你们能解释一下这背后的逻辑是什么吗?public class Tricky3 {
public static void main(String[] args) {
Derive derive = new Derive();
System.out.println(derive.f(10));
System.out.println(derive.f(10.0f));
System.out.println("------------------New Logic-----------------");
Base base = new Derive();
System.out.println(base.f(20));
System.out.println(base.f(20.0f));
}
}
class Base {
public int f(int i) {
System.out.print("Base f (int): ");
return i + 3;
}
public double f(double i) {
System.out.print("Base f (double) : ");
return i + 3.3;
}
}
class Derive extends Base{
public float f(float i) {
System.out.print("Derive f (float) : ");
return i + 3.3f;
}
public int f(int i) {
System.out.print("Derive f (int): ");
return i + 3;
}
}
输出Derive f (int): 13
Derive f (float) : 13.3
------------------New Logic-----------------
Derive f (int): 23
Base f (double) : 23.3