JavaScript is required

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