请分别写出E类中代码1和代码2的输出结果。 class A{ double f(double x,double y){ return x+y;} } class B extends A{ double f(int x,int y){ return x*y;} } public E{ public static void main(String[] args){ B b=new B(); System.out.println(b.f(3,5));//代码1 System.out.println(b.f(3.0,5.0));//代码2 } }
时间: 2024-04-28 17:26:25 浏览: 108
代码1的输出结果为 15.0,代码2的输出结果为 8.0。
这是因为在类 B 中,方法 f(int x, int y) 重写了超类 A 中的方法 f(double x, double y),方法的重写是根据方法的名称、参数类型以及参数数量来匹配的。当调用 b.f(3, 5) 时,会调用类 B 中的方法 f(int x, int y),因为参数是整数类型,所以返回值为 3 * 5 = 15.0。而调用 b.f(3.0, 5.0) 时,会调用超类 A 中的方法 f(double x, double y),因为参数是浮点数类型,所以返回值为 3.0 + 5.0 = 8.0。
阅读全文