JavaScript is required

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à ?

A.

0

B.

1

C.

2

D.

Chương trình báo lỗi

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 AB 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 class KiemTra 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ủa nextId cho thuộc tính id của đối tượng đó, sau đó tăng nextId lên 1.

Quá trình thực thi:

  1. Khởi tạo đối tượng A: nextId ban đầu là 1, sau khi gọi setId(), A.id sẽ là 1 và nextId tăng lên 2.
  2. Khởi tạo đối tượng B: nextId hiện tại là 2, sau khi gọi setId(), B.id sẽ là 2 và nextId tăng lên 3.

Do đó, giá trị id của đối tượng B là 2.

Câu hỏi liên quan