JavaScript is required

Cho đoạn chương trình sau. Hãy cho biết chương trình có lỗi hay không, nếu có thì sửa chữa thế nào để chương trình có thể biên dịch:
class C3 {
private static int z = 10;
private int t = 100;
public static void main(String args[]) {
C3 obj1 = new C3();
obj1.z++;
obj1.t++;
C3.t--;
C3.z--;
System.out.println(" t = " + C3.t);
System.out.println(" z = " + z);
}
}

A.

Sửa lại dòng số 8 thành obj1.t --;

B.

Sửa lại dòng số 10 thành System.out.println ( " t = " + obj1.t );

C.

Phải sửa cả hai dòng 8 và 10 từ C3.t thành obj1.t

D.
Chương trình không có lỗi
Trả lời:

Đáp án đúng: C


Chương trình có lỗi vì biến `t` là biến instance (không static) nên không thể truy cập thông qua tên class `C3`. Biến `z` là biến static (biến của lớp) nên có thể truy cập thông qua tên lớp hoặc đối tượng. * **Dòng 8: `C3.t--;`** Đây là lỗi. Vì `t` là biến instance, nó thuộc về *đối tượng* của lớp `C3`, không phải bản thân lớp. Vì vậy, bạn phải truy cập nó thông qua một đối tượng, ví dụ `obj1.t--`. * **Dòng 10: `System.out.println(" t = " + C3.t);`** Tương tự như trên, đây cũng là lỗi vì `t` là biến instance và phải được truy cập thông qua một đối tượng, ví dụ `obj1.t`. Vậy, để sửa lỗi chương trình, ta cần sửa cả hai dòng 8 và 10 từ `C3.t` thành `obj1.t`. * **Đáp án A sai:** Chỉ sửa dòng 8 không giải quyết được lỗi ở dòng 10. * **Đáp án B sai:** Chỉ sửa dòng 10 không giải quyết được lỗi ở dòng 8. * **Đáp án C đúng:** Sửa cả hai dòng 8 và 10 sẽ khắc phục được lỗi. * **Đáp án D sai:** Chương trình có lỗi biên dịch.

Câu hỏi liên quan