JavaScript is required

Cho đoạn mã sau đây. Hãy chọn phát biểu đúng
Dog rover,
fido;
Animal anim;

rover = new Dog();
anim = rover;
fido = (Dog) anim;

A.

Dòng 5 không thể biên dịch

B.

Dòng 6 không thể biên dịch

C.

Đoạn mã biên dịch thành công nhưng sẽ phát sinh Exception tại dòng 6

D.
Đoạn mã biên dịch thành công và có thể thi hành
Trả lời:

Đáp án đúng: D


Đoạn mã trên hoàn toàn hợp lệ và sẽ biên dịch và thực thi thành công. * **Dòng 1-3:** Khai báo các biến: * `rover` kiểu `Dog`. * `fido` kiểu `Dog`. * `anim` kiểu `Animal`. * **Dòng 5:** Khởi tạo một đối tượng `Dog` mới và gán cho `rover`. * **Dòng 6:** Gán `rover` (kiểu `Dog`) cho `anim` (kiểu `Animal`). Đây là upcasting, hoàn toàn hợp lệ vì `Dog` là một lớp con của `Animal`. * **Dòng 7:** Ép kiểu `anim` (kiểu `Animal`) về `Dog` và gán cho `fido`. Vì `anim` thực tế đang tham chiếu đến một đối tượng `Dog`, việc ép kiểu này là an toàn và không gây ra lỗi. Vì vậy, không có dòng nào gây ra lỗi biên dịch hoặc ngoại lệ trong quá trình thực thi.

Câu hỏi liên quan