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:
nextIdlà biến static, nên nó được chia sẻ giữa tất cả các đối tượng của classKiemTravà 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ủanextIdcho thuộc tínhidcủa đối tượng đó, sau đó tăngnextIdlên 1.
Quá trình thực thi:
- Khởi tạo đối tượng
A:nextIdban đầu là 1, sau khi gọisetId(),A.idsẽ là 1 vànextIdtăng lên 2. - Khởi tạo đối tượng
B:nextIdhiện tại là 2, sau khi gọisetId(),B.idsẽ là 2 vànextIdtăng lên 3.
Do đó, giá trị id của đối tượng B là 2.





