Chẳng hạn ta thực hiện câu lệnh: x.f(param); khi đó dynamic binding sẽ họat động như sau:
+ Lấy tất cả các method có tên là f từ bảng method lookup (bảng này bao gồm cả các method ở các class cha của class mà x là một instance)
+ Lấy ra tất cả các method có tham số có kiểu phù hợp với param, phù hợp bao hàm cả việc implicit casting trong các method đã được lấy ở trên
+ Dựa trên kiểu của method (private, static, final hay constructor), khi này, JVM sẽ chọn đúng method cần thiết nhưng là static binding
+ Nếu vượt qua bước 3, JVM sẽ gọi method tương ứng với kiểu thực sự của x. Nếu không có method tương ứng với kiểu thực sự của x, JVM sẽ lần ngược lên inheritance hierachy để tìm và gọi method gần nhất.
Hơi ngớ ngẩn 1 chút nhưng bài này refine lại bài: Dynamic binding trong Java :-D
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment