[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.39,0:00:04.01,Default,,0000,0000,0000,,Giờ thì chuyển sang phần thêm display method. Giả sử là Dialogue: 0,0:00:04.01,0:00:08.33,Default,,0000,0000,0000,,để hiển thị một choice question trong định dạng như này. Trước tiên là text của câu hỏi. Dialogue: 0,0:00:08.33,0:00:11.81,Default,,0000,0000,0000,,Tiếp theo là tất cả các lựa chọn. Và ta thêm các số 1, 2, 3, 4 vào trước Dialogue: 0,0:00:11.81,0:00:18.10,Default,,0000,0000,0000,,mỗi lựa chọn để dễ phân biệt hơn. Dialogue: 0,0:00:18.10,0:00:21.61,Default,,0000,0000,0000,,Phần này thì cũng dễ. Ta chỉ việc lặp qua mảng các lựa chọn Dialogue: 0,0:00:21.61,0:00:26.07,Default,,0000,0000,0000,,và in chúng ra, với một con số ở trước. Và vì cái này không có liên quan gì Dialogue: 0,0:00:26.07,0:00:29.53,Default,,0000,0000,0000,,tới việc học về {\i1}inheritance{\i0} (kế thừa), tôi sẽ đưa cho bạn đoạn code này. Dialogue: 0,0:00:29.53,0:00:35.50,Default,,0000,0000,0000,,Nó ở đây. Nên ta in ra số của lựa chọn và lựa chọn đó. Dialogue: 0,0:00:35.50,0:00:39.75,Default,,0000,0000,0000,,Trong Java, các lựa chọn được đánh số là 0, 1, 2, 3. Dialogue: 0,0:00:39.75,0:00:43.31,Default,,0000,0000,0000,,Và ta thì muốn là 1, 2, 3, 4, nghĩa là tính bằng Dialogue: 0,0:00:43.31,0:00:48.69,Default,,0000,0000,0000,,i + 1 như trên đây. Phần khó là hiển thị text của câu hỏi. Dialogue: 0,0:00:48.69,0:00:52.60,Default,,0000,0000,0000,,Và, question text thì ở trong Superclass object, và ta không thể Dialogue: 0,0:00:52.60,0:00:59.82,Default,,0000,0000,0000,,lấy nó trực tiếp. Hãy xem Superclass. Đây là question text, Dialogue: 0,0:00:59.82,0:01:04.76,Default,,0000,0000,0000,,ta có method nào để đọc nó không? có đó. Và ta có thể gọi display, Dialogue: 0,0:01:04.76,0:01:10.40,Default,,0000,0000,0000,,và sau đó nó sẽ in ra. Đó là thứ ta cần. Hãy làm thế. Dialogue: 0,0:01:10.40,0:01:14.78,Default,,0000,0000,0000,,Ở đây tôi gọi display, nó sẽ hiển thị text và sau đó tôi có thể hiện thị Dialogue: 0,0:01:14.78,0:01:20.22,Default,,0000,0000,0000,,các lựa chọn này. Oh, có điều gì đó không ổn ở đây, Dialogue: 0,0:01:20.22,0:01:25.40,Default,,0000,0000,0000,,tôi có lỗi StackOverflow Error. Đó là do có một method Dialogue: 0,0:01:25.40,0:01:31.83,Default,,0000,0000,0000,,mà gọi chính nó. Sao lại là chính nó. Xem method đang gọi display, Dialogue: 0,0:01:31.83,0:01:37.15,Default,,0000,0000,0000,,và ở đây nó đang gọi chính nó. Đó là vấn đề, tôi không muốn gọi method của tôi, Dialogue: 0,0:01:37.15,0:01:42.73,Default,,0000,0000,0000,,tôi muốn gọi display method của Question class cơ mà. Nên, vấn đề khó khăn là, Dialogue: 0,0:01:42.73,0:01:47.72,Default,,0000,0000,0000,,có 2 method gọi là display, ở trong Superclass và ở subclass này. Dialogue: 0,0:01:47.72,0:01:51.20,Default,,0000,0000,0000,,Và tên của nó giống nhau. Đó chính là vấn đề luôn xảy ra khi ta override một method. Dialogue: 0,0:01:51.20,0:01:55.21,Default,,0000,0000,0000,,Giờ, có một cấu trúc đặc biệt để gọi Superclass method, Dialogue: 0,0:01:55.21,0:02:01.14,Default,,0000,0000,0000,,và nó như này. Bạn đơn giản ghi là super.display() Tiếp tục và thử nó Dialogue: 0,0:02:01.14,0:02:03.86,Default,,0000,0000,0000,,và sửa lỗi trong display method.