经过 2-3 小时后才知道,compile-time 和 run-time有什么区别。最后,我想出了这个。
在运行时分配的内存称为运行时/动态绑定,在编译时分配的内存称为编译时/静态绑定。
然后我尝试了这个例子
class myclass {
void here() {
System.out.println("Here from myclass !!");
}
void here(int i) {
System.out.println("Here !!" + i);
}
}
class thisclass extends myclass {
void here() {
System.out.println("Here from thisclass !!");
}
}
public class poly {
public static void main(String s[]) {
myclass m= new myclass();
myclass a= new thisclass();
m.here();
m.here(12);
a.here();
a.here(13);
}
}
所以,我还发现这myclass a= new thisclass();
被认为是运行时绑定。由于,a
是 的对象myclass
,但突然编译器发现,类不匹配。因此,它将动态绑定thisclass
对象的空间。
所以,直到这里,我得到了东西。但是,我发现,另一个常见的答案是重载引用编译时和覆盖引用运行时。我没有明白这一点。
thisclass a= new thisclass();
a.here();
这是否也称为运行时绑定。?? 请纠正我,如果在这里写错了。