经过2-3个小时才知道, compile-time and 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 对象的空间 .
所以,直到这里,我得到了东西 . 但是,我发现,另一个常见的答案是 overloading refer to compile time and overriding refer to run-time . 我没有明白这一点 .
thisclass a= new thisclass();
a.here();
这也称为运行时绑定 . ??如果在这里写错了,请纠正我 .