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"?