JavaScript is required

Cho class như sau: class KiemTra { private int i; private static int nextId; 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à ?

A.

0

B.

1

C.

2

D.

Không có giá trị đúng

Trả lời:

Đáp án đúng: A


Đầu tiên, ta thấy nextId là một biến static, nghĩa là nó được chia sẻ giữa tất cả các đối tượng của class KiemTra và các class con của nó. Khi chương trình bắt đầu, nextId được khởi tạo mặc định là 0.

Khi một đối tượng của class A (kế thừa từ KiemTra) được tạo và phương thức setId() được gọi, id của đối tượng A sẽ được gán giá trị của nextId (là 0), sau đó nextId tăng lên 1.

Tiếp theo, khi một đối tượng của class B (cũng kế thừa từ KiemTra) được tạo và phương thức setId() được gọi, id của đối tượng B sẽ được gán giá trị của nextId (lúc này là 1), sau đó nextId tăng lên 2.

Vậy, id của đối tượng B có giá trị là 1.

Câu hỏi liên quan