JavaScript is required

Đoạn mã sau có lỗi biên dịch gì?
class Person {
protected String name;
public int age;
};
public class Main {
public static void main(String[] args) {
Person p = new Person();
p.name = "Tom";
}
}

A.
Không có lỗi biên dịch.
B.
name has protected access.
C.
age has protected access.
D.
name has public access
Trả lời:

Đáp án đúng: B


Trong đoạn mã, biến `name` của lớp `Person` được khai báo là `protected`. Điều này có nghĩa là nó chỉ có thể được truy cập từ bên trong lớp `Person`, từ các lớp con của `Person` và từ các lớp trong cùng package. Trong hàm `main` của lớp `Main`, chúng ta đang cố gắng truy cập biến `name` từ bên ngoài lớp `Person` (và không phải từ một lớp con hoặc trong cùng package), điều này là không được phép. Do đó, sẽ có lỗi biên dịch liên quan đến việc truy cập `protected` của `name`. Biến `age` được khai báo là `public` nên không gây ra lỗi truy cập. Vậy, đáp án đúng là B.

Câu hỏi liên quan