Cho lớp A, B, C trong đó lớp C kế thừa lớp A, B. Trong lớp A, B đều có phương thức Xuat, khi khai báo đối tượng obj thuộc lớp C thì nếu gọi đến phương thức Xuat (obj.Xuat()) thì phương thức Xuat của lớp nào sẽ được gọi?
Trả lời:
Đáp án đúng: C
Trong trường hợp đa kế thừa như lớp C kế thừa từ cả lớp A và lớp B, và cả hai lớp A và B đều có phương thức `Xuat`, thì khi gọi `obj.Xuat()` trên một đối tượng `obj` thuộc lớp C, ngôn ngữ lập trình cần có cơ chế để giải quyết sự mơ hồ này. Cơ chế này thường được gọi là "giải quyết xung đột tên" (name collision resolution).
Trong nhiều ngôn ngữ (như C++), nếu không chỉ định rõ phương thức `Xuat` nào sẽ được gọi trong lớp C, trình biên dịch sẽ báo lỗi (tức là "lỗi không thể xác định được"). Lập trình viên cần phải chỉ rõ lớp nào (A hay B) mà phương thức `Xuat` sẽ được kế thừa và sử dụng trong lớp C bằng cách sử dụng toán tử phạm vi (scope resolution operator) hoặc bằng cách ghi đè (override) phương thức `Xuat` trong lớp C để định nghĩa lại hành vi mong muốn.
Do đó, đáp án đúng là "C. Lỗi không thể xác định được" vì nếu không có sự can thiệp rõ ràng từ lập trình viên để giải quyết xung đột, trình biên dịch sẽ không thể tự động chọn một trong hai phương thức `Xuat` một cách tùy ý.
Cùng ôn thi với bộ câu hỏi trắc nghiệm môn Lập trình hướng đối tượng có đáp án mà tracnghiem.net chia sẽ dưới đây, nhằm giúp các bạn sinh viên chuyên ngành chuẩn bị cho kì thi sắp tới.
48 câu hỏi 60 phút
Câu hỏi liên quan

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
