Đa hình trong OOP: Compile Time vs. Run Time

Tính đa hình là một khái niệm quan trọng trong Lập trình hướng đối tượng. Việc nắm vững khái niệm này sẽ giúp việc lập trình trở nên dễ dàng hơn. Một trong những công cụ giúp ta nắm vững về Tính đa hình đó là Compile Time Rules và Run Time Rules.
Như ta đã biết, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy.

Vì vậy, đầu tiên ta nói về Compile Time Rules:
  • Compiler ONLY knows reference type - Trình biên dịch chỉ biết kiểu tham chiếu của đối tượng.
  • Can only look in reference type class for method -  Trình biên dịch chỉ tìm method dựa trên kiểu tham chiếu.
  • Outputs a method signature - Cuối cùng, mục tiêu của nó là đưa ra một method signature, mà sau đó sẽ được thực thi ở runtime.
Tiếp theo là Run Time Rules:
  • Follow exact runtime type of object to find method - Biết chính xác kiểu là gì để tìm method.
  • Must match compile time method signature to appropriate method in actual object’s class - Tìm một method thực sự của object dựa theo method signature.

Như vậy, trình biên dịch và môi trường thực thi có "quy định" hơi khác nhau một xíu. Vì vậy, trong lập trình ta cần 
“Think like a compiler, act like a runtime environment” - Rick Ord





Nhận xét