class C{ public void m(int x, int y) { System.out.println("C's m(int,int)"); } public void m(double x, double y) { System.out.println("C' m(double,double)"); } } class D extends C{ public void m(float x, float y) { System.out.println("D's m(float,float)"); } public void m(int x, int y) { System.out.println("D's m(int,int)"); } } 为什么C o1 = new D();o1.m(1.0,1.0);输出C' m(double,double)
时间: 2023-06-01 08:02:44 浏览: 81
Java中char型数据和int型数据之间的转换和数组的引用例题
因为在Java中,方法重载是在编译时确定的,而不是在运行时确定的。在这种情况下,虽然o1的实际类型是D,但是由于它的静态类型是C,因此编译器会选择C中的m(double,double)方法,而不是D中的任何方法。因此,输出为"C' m(double,double)"。
阅读全文