class A { double f(int x,double y) { return x+y; } int f(int x,int y ) { return x*y; } } public class E { public static void main(String args[]) { A a=new A(); System.out.println(a.f(10,10)); //【代码1】 System.out.println(a.f(10,10.0)); //【代码2】 } }
时间: 2023-04-08 21:03:20 浏览: 624
这是一个关于Java语言的问题,我可以回答。在代码1中,输出的结果是100,因为调用的是f(int x,int y)方法;在代码2中,输出的结果是100.0,因为调用的是f(int x,double y)方法。
相关问题
4.下列代码运行的结果是( class A double f(double x,double y) ( return x+y; ] class B extends A t double f(int x,int y) return x*y; ) double f(double x,double y) f return y-x; 〕 public class Test2 public static void main(String args[])( B b=new BO; System.out.println(b.f(5,8)); System.out.println(b.f(8.0,12.0));)
这段代码会输出以下结果:
- 40
- 4.0
解释:
- 第一次调用b.f(5,8)时,会调用B类中的f方法,因为参数是int类型,匹配了B类中的int版本的f方法。所以会输出5*8=40。
- 第二次调用b.f(8.0,12.0)时,会调用A类中的f方法,因为参数是double类型,B类中没有double版本的f方法,所以会调用A类中的double版本的f方法。该方法会返回12.0-8.0=4.0。
class A{ int f(int x, int y) { return x+y; } } class B extends A { int f (double x, int y) { return (int) x*y; } } public class E { public static void main (String args []) { B b=new B(); int m = b. f (3, 5) ; int n = b. f (3. 14, 5) ; System. out. printf ("%d:%d” ,m,n); } }详细解读该段代码
该段代码定义了一个A类和一个B类,并在主函数中创建了一个B类的实例对象b。A类中有一个公共方法f(int x, int y),该方法返回两个整数x和y的和。B类继承了A类,并重载了f()方法,提供了一个f(double x, int y)方法,该方法返回一个double类型的数x乘以一个整数y的整数部分。
在主函数中,通过创建一个B类的实例对象b,分别调用了它的f()方法。第一个调用传入了两个整数3和5,根据多态特性,会调用A类中的f(int x, int y)方法,返回8。第二个调用传入了一个double类型的数3.14和一个整数5,由于B类中有一个f(double x, int y)方法,因此会调用该方法,返回15。
最后,将这两个返回值通过printf()方法输出。需要注意的是,输出时使用了中文冒号,应该改为英文冒号。
阅读全文