Cho đoạn mã sau đây. Hãy chọn phát biểu đúng
A.
Dòng 6 không thể biên dịch; cần có một phép ép kiểu để chuyển từ kiểu Cat sang kiểu Washer
B.
Dòng 7 không thể biên dịch vì không thể ép từ kiểu interface sang kiểu class
C.
Đoạn mã sẽ dịch và chạy nhưng phép ép kiểu ở dòng 7 là thừa và có thể bỏ đi
D.
Đoạn mã biên dịch thành công nhưng sẽ phát sinh Exception ở dòng 7 vì kiểu lớp của đối tượng trong biến wawa lúc thi hành không thể chuyển sang kiểu SwampThing
Trả lời:
Đáp án đúng: D
Đoạn mã cho thấy việc ép kiểu giữa các kiểu dữ liệu khác nhau. Dòng 6 thực hiện ép kiểu từ `Cat` (một lớp) sang `Washer` (một interface) là hợp lệ vì `Cat` triển khai interface `Washer`. Dòng 7 thực hiện ép kiểu từ `Washer` (interface) sang `SwampThing` (một lớp). Trong trường hợp này, mặc dù đoạn mã biên dịch thành công, nhưng tại thời điểm chạy (runtime), nếu đối tượng thực tế được tham chiếu bởi `wawa` không phải là một thể hiện của `SwampThing` hoặc một lớp con của `SwampThing`, thì việc ép kiểu sẽ gây ra một `ClassCastException`. Trong trường hợp này, `wawa` tham chiếu đến một đối tượng `Cat`, và `Cat` không phải là `SwampThing` cũng không phải là lớp con của `SwampThing`. Do đó, một ngoại lệ sẽ xảy ra tại dòng 7.
Tổng hợp 350 câu hỏi trắc nghiệm môn lập trình mạng có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.
50 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
