JavaScript is required

Cho class như sau: class KiemTra { private int i; private 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 A có giá trị là ?

A.

0

B.

1

C.

2

D.

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

Trả lời:

Đáp án đúng: B


Đầu tiên, cần lưu ý rằng biến nextId được khai báo là private, do đó nó chỉ có thể truy cập bên trong class KiemTra. Tuy nhiên, đoạn code cho thấy trong phương thức setId(), biến id lại được gán giá trị từ nextId. Biến id chưa được khai báo trong class KiemTra. Do đó đoạn code này sẽ không biên dịch được. Trong trường hợp nó là một biến thành viên của class thì nó phải được khai báo trước đó. Khi đó, mỗi khi một đối tượng (A hoặc B) được tạo ra, phương thức setId() sẽ được gọi. Giá trị của nextId sẽ được gán cho id của đối tượng và sau đó nextId tăng lên. Vì nextId là biến thành viên của class KiemTra, nên nó sẽ được khởi tạo mặc định là 0. Khi đối tượng A được tạo và setId() được gọi, id của A sẽ là 0 và nextId sẽ tăng lên 1. Khi đối tượng B được tạo và setId() được gọi, id của B sẽ là 1 và nextId sẽ tăng lên 2. Như vậy, id của đối tượng A là 0.

Câu hỏi liên quan