Cho class như sau: class KiemTra { private int i; private static int nextId = 1; public void setId() { id = nextId; nextId++; } } Nếu khởi tạo 2 đối tượng class A extends KiemTra và class B extends KiemTra, id của đối tượng B có giá trị là ?
Trả lời:
Đáp án đúng: A
Đề bài yêu cầu xác định giá trị của thuộc tính id
của đối tượng B
sau khi khởi tạo hai đối tượng A
và B
từ class kế thừa KiemTra
.
Phân tích:
nextId
là biến static, nên nó được chia sẻ giữa tất cả các đối tượng của classKiemTra
và các class con của nó.- Khi một đối tượng được tạo, phương thức
setId()
gán giá trị củanextId
cho thuộc tínhid
của đối tượng đó, sau đó tăngnextId
lên 1.
Quá trình thực thi:
- Khởi tạo đối tượng
A
:nextId
ban đầu là 1, sau khi gọisetId()
,A.id
sẽ là 1 vànextId
tăng lên 2. - Khởi tạo đối tượng
B
:nextId
hiện tại là 2, sau khi gọisetId()
,B.id
sẽ là 2 vànextId
tăng lên 3.
Do đó, giá trị id
của đối tượng B
là 2.