【发布时间】:2017-03-28 18:07:38
【问题描述】:
以下是关于我的疑问的代码片段。
class A {
void someMethod(A param) {
System.out.println("A");
}
}
class C extends A {
void someMethod(C param) {
System.out.println("C");
}
}
class DMD {
public static void main(String[] args) {
A ac = new C();
C c = new C();
ac.someMethod(c);
}
}
输出:
A
但我将输出排除为
C
因为我已经为C分配了内存,而A指的是C的内存位置,所以如果我调用A引用上的方法,它指向C,并且参数作为C 类型传递,那么我希望someMethod(C) 方法应该执行。
谁能给我这种行为的正当理由?
提前致谢。
【问题讨论】:
-
因为 C 没有扩展 A,所以无法编译。
-
这与正则表达式无关
标签: java polymorphism