Chọn phát biểu đúng cho chương trình sau:
final class Aaa {
int xxx;
void yyy() {
xxx = 1;
}
}
class Bbb {
final Aaa finalRef = new Aaa();
final void yyy() {
System.out.println("In method yyy()");
finalRef.xxx = 12345;
}
};
final class Aaa {
int xxx;
void yyy() {
xxx = 1;
}
}
class Bbb {
final Aaa finalRef = new Aaa();
final void yyy() {
System.out.println("In method yyy()");
finalRef.xxx = 12345;
}
};
int xxx;
void yyy() {
xxx = 1;
}
}
class Bbb {
final Aaa finalRef = new Aaa();
final void yyy() {
System.out.println("In method yyy()");
finalRef.xxx = 12345;
}
};
Trả lời:
Đáp án đúng: D
Đoạn chương trình Java cung cấp hai lớp, `Aaa` và `Bbb`. Lớp `Aaa` có một biến thành viên `xxx` kiểu `int` và một phương thức `yyy()` để gán giá trị 1 cho `xxx`. Lớp `Bbb` có một biến thành viên `finalRef` kiểu `Aaa` được khởi tạo bằng một thể hiện mới của lớp `Aaa`, và một phương thức `yyy()` để in ra "In method yyy()" và sau đó gán giá trị 12345 cho biến `xxx` của đối tượng `finalRef`.
Phân tích các lựa chọn:
* **Lựa chọn A:** Sai. Chương trình biên dịch thành công, không có lỗi biên dịch tại dòng 5 và 12. Các phương thức không yêu cầu bắt buộc phải có kiểu trả về (void, int, ...), có thể không có tham số.
* **Lựa chọn B, C, D:** Chương trình không in ra giá trị của x, nên không thể biết kết quả x = 10, x = 15, hay x = 3. Hơn nữa, chương trình cũng không in bất kì giá trị nào ra màn hình, mà chỉ in dòng chữ "In method yyy()".
Tuy nhiên, cần lưu ý rằng code này sẽ biên dịch và chạy mà không gặp lỗi. Do đó, không có đáp án nào đúng trong các lựa chọn đã cho.