JavaScript is required

Chương trình sẽ in ra kết quả gì khi thực thi đoạn mã sau?
package pac02;
public class ClassA {
protected int xA;
public String yA;
}
---------
package pac01;
import pac02.ClassA;
public class Test {
public static void main(String[] args) {
ClassA a = new ClassA();
a.xA = 12;
a.yA = "Hello";
System.out.println("a.xA = " + a.xA + "; a.yA = " + a.yA);
}
}

A.
Lỗi biên dịch dòng 2.7
B.
Lỗi biên dịch dòng 2.5
C.
Lỗi biên dịch dòng 2.5, 2.7
D.
xA = 12; a.yA = Hello
Trả lời:

Đáp án đúng: D


Trong đoạn mã, biến `xA` của lớp `ClassA` đượ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 `ClassA`, từ các lớp con của `ClassA` và từ các lớp trong cùng package (pac02). Lớp `Test` nằm trong package `pac01`, khác với package của `ClassA`, và không phải là lớp con của `ClassA`. Do đó, việc truy cập `a.xA` trong lớp `Test` là không hợp lệ, gây ra lỗi biên dịch. Dòng `a.yA` sẽ không bị lỗi vì `yA` có access modifier là `public`.

Câu hỏi liên quan