public class Test01 {
public static void main(String[] args) {
A a = new A();
a.p(10);
a.p(10.0);
}
}
class B {
public void p(double i) {
System.out.println(i * 2);
}
}
class A extends B {
@Override
public void p(double i) {
System.out.println(i);
}
}
public class Test02 {
public static void main(String[] args) {
D d = new D();
d.p(10);
d.p(10.0);
}
}
class C {
public void p(double i) {
System.out.println(i * 2);
}
}
class D extends C {
public void p(int i) {
System.out.println(i);
}
}
运行Test01 时,a.p(10)和a.p(10.0)调用的都是定义在A中的牌(double i)方法
所以程序显示的都是10.0
运行Test02 时,d.p(10)调用的是定义在D中的p(int i)方法,显示输出为10;d.p(10.0)调用的是定义在C中的p(double i)方法,显示输出为20.0;