JavaScript is required

Đoạn mã sau có lỗi biên dịch gì? Chọn một câu trả lời
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);
}
}

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: A


Đoạn mã không có lỗi biên dịch. Trong cùng một class, các thành viên (fields, methods) có access modifier là `protected` vẫn có thể được truy cập trực tiếp. Lỗi chỉ xảy ra khi truy cập từ một class khác không phải là subclass, hoặc từ bên ngoài package nếu không phải subclass. Trong trường hợp này, `main` method nằm trong class `Person` và truy cập trực tiếp vào field `name` của một instance của `Person`, do đó không có lỗi xảy ra.

Câu hỏi liên quan