【发布时间】:2012-09-04 15:29:54
【问题描述】:
如果我有两个班级,A 和 B,
public class A {
public int test() {
return 1;
}
}
public class B extends A{
public int test() {
return 2;
}
}
如果我这样做:A a1 = new B(),那么a1.test() 根据需要返回 2 而不是 1。
这只是 Java 的一个怪癖,还是这种行为有某种原因?
【问题讨论】:
-
这叫做
dynamic binding,你还需要了解static binding。当您尝试覆盖(实际上隐藏)字段而不是方法时,它变得有点棘手。您会在 SO 或 google 上找到很多关于此的问题。
标签: java inheritance