知るために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();
これは実行時バインディングとも呼ばれますか。?? ここに何か間違ったことを書いた場合は、私を修正してください。