Đoạn mã sau có lỗi biên dịch gì?
public class Person {
protected String name;
protected int age;
public static void main(String[] args) {
Person p = new Person();
p.name = "Tom";
System.out.println(p.name);
}
}
public class Person {
protected String name;
protected int age;
public static void main(String[] args) {
Person p = new Person();
p.name = "Tom";
System.out.println(p.name);
}
}
Trả lời:
Đáp án đúng: A
Đoạn mã trên không có lỗi biên dịch nào. Trong cùng một class, các thuộc tính protected có thể được truy cập trực tiếp.
- Thuộc tính `name` được khai báo là `protected`, điều này có nghĩa là nó có thể được truy cập từ bên trong class `Person` và từ các class con của `Person`, cũng như từ các class khác trong cùng package.
- Trong phương thức `main`, chúng ta tạo một đối tượng `Person` và truy cập trực tiếp vào thuộc tính `name` để gán giá trị và in ra. Vì `main` là một phương thức của class `Person`, nên việc truy cập này hoàn toàn hợp lệ.
- Các phương án B và C sai vì chúng đều nói rằng có lỗi truy cập protected, nhưng trong trường hợp này, việc truy cập là hợp lệ.
- Phương án D sai vì `name` được khai báo là `protected`, không phải `public`.
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
