Saturday, October 01, 2005

Dynamic binding trong Java

Giả sử ta gọi thực hiện x.m(p), dynamic binding sẽ họat động như sau:

+ JVM sẽ tìm tất cả các method có tên m() trong class của x và trong các class cha của x. Nếu không có, báo lỗi.

+ Chọn ra các method có tham số có kiểu phù hợp với kiểu của p (bao gồm cả vấn đề ép kiểu, ví dụ p có kiểu int thì chọn cả các method có tham số có kiểu long, float,...). Nếu không có, báo lỗi.

+ Xem xem có method m() có tham số kiểu có kiểu giống p trong class của x ko. Nếu có, thực hiện. Nếu không tìm ở các class cha. Nếu không có method m() nào có tham số có kiểu giống p ở class của x và các class cha, tìm method m() có tham số có kiểu gần nhất (chẳng hạn p có kiểu int thì tìm xem có method nào có tham số kiểu long không). Qúa trình này cứ lặp đi lặp lại.

Khi load class vào bộ nhớ, JVM đã load method lookup table của class đó nên khi cần tìm method sẽ không tốn nhiều thời gian.

No comments: