这样一个程序,答案15.0,8.0
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 class Example7 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
B b=new B();
System.out.println(b.f(3,5));
System.out.println(b.f(3.0,5.0));
}}
15.0这个答案我能理解,8.0啦?类B不是重写了类A的方法了吗,那么b.f(3.0,5.0)调用double f(int x,int y)这个方法,return x*y 不还是15.0吗?
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 class Example7 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
B b=new B();
System.out.println(b.f(3,5));
System.out.println(b.f(3.0,5.0));
}}
15.0这个答案我能理解,8.0啦?类B不是重写了类A的方法了吗,那么b.f(3.0,5.0)调用double f(int x,int y)这个方法,return x*y 不还是15.0吗?
class B extends A
{
double f(double x,double y)
{
return x+y;
}double f(int x,int y)
{
return x*y;
}
}简单的去理解这个问题
把B类中看作有2个方法
b.f(3,5)中3和5是Int型那自然选择方法double f(int x,int y)(b.f(3.0,5.0)中3.0和5.0是double 型自然选择方法double f(double x,double y)
结果就是你看到的结果。
不自然我把问题简单话,能否理解。
因为你的数据类型是整形的
System.out.println(b.f(3.0,5.0));
调用的是浮点型的
这样就没办法用子类的方法 但是可以继承父类的方法