1 00:00:00,250 --> 00:00:03,814 Ta vừa nói về display method nào được gọi trong presentQuestion method? 2 00:00:03,814 --> 00:00:07,890 Method có một parameter, kiểu là question. Nên đây là 3 00:00:07,890 --> 00:00:11,847 parameter variable. Nó chứa một object reference sẽ chỉ tới một object, 4 00:00:11,847 --> 00:00:15,239 một object thuộc một kiểu, khi bạn nghĩ nó là kiểu question, vì cuối cùng 5 00:00:15,239 --> 00:00:18,260 nó là kiểu của q, nhưng không quá nhanh, kiểu của q, không còn là question. 6 00:00:18,260 --> 00:00:24,710 kiểu của object thực sự là không biết được. Nó có thể là một sub-type 7 00:00:24,710 --> 00:00:27,900 của question. Tin tốt là, khi chương trình chạy, nó sẽ làm điều đúng đắn. 8 00:00:27,900 --> 00:00:34,510 Khi runtime, nó sẽ xác định chính xác kiểu của object là gì. 9 00:00:34,510 --> 00:00:38,352 Và display method của nó được xác định. Đó có thể là question.display, 10 00:00:38,352 --> 00:00:43,345 choicequestion.display, hoặc là display method của class nào đó, mà cũng extends Question class, 11 00:00:43,345 --> 00:00:46,790 đây là một tính năng hữu ích vì nó cho phép ta 12 00:00:46,790 --> 00:00:50,182 viết generic codes (code chung) ví dụ như present question, có thể hoạt động với các câu hỏi 13 00:00:50,182 --> 00:00:53,415 thuộc bất kỳ thể loại nào, và sơ đồ này có thể quen thuộc với bạn, bạn đã thấy 14 00:00:53,415 --> 00:00:56,860 một cái tương tự khi ta nói về interfaces và có một cái tên cho sự thật là 15 00:00:56,860 --> 00:01:04,664 phiên bản chính xác của một method được chọn lúc runtime. Hãy nhớ xem nó tên là gì? 16 00:01:04,664 --> 00:01:11,015 Có phải nó là "object oriented programming"? "Encapsulation"? "Inheritance"? 17 00:01:11,015 --> 00:01:12,191 hay "Polymorphism"?