Java - Hãy chọn đáp án đúng trong các đáp án cho sẵn của đoạn chương trình dưới đây.

Bài tập này yêu cầu chúng ta hãy chọn đáp án đúng trong các đáp án cho sẵn của đoạn chương trình dưới đây, giải thích vì sao có kết quả đó và sử dụng Eclipse để kiểm chứng.

Interface.java
package baitap;

public interface Calculate {

	int VAR = 0;
	void cal(int item);
	
}

Display.java
package baitap;

public class Display implements Calculate {

	int x;
	
	@Override
	public void cal(int item) {
		if (item < 2)
			x = VAR;
		else
			x = item * item;       
	}

}

Test.java
package baitap;

public class Test {

	public static void main(String[] args) {
		
		Display[] arr = new Display[3];
		 
		for (int i = 0; i < 3; i++) {
			arr[i] = new Display();
		}
		
		arr[0].cal(0);    
		arr[1].cal(1);
		arr[2].cal(2);
		System.out.print(arr[0].x + " " + arr[1].x + " " + arr[2].x);
        
	}
	
}

A 0 1 2
B 0 2 4
C 0 0 4
D 0 1 4

 

Bài giải

-------------------- ######## --------------------

Đáp án: C. 0 0 4

Giải thích: 

Trong đoạn chương trình trên, tôi tạo 1 Interface có tên là Calculate. Trong Interface này, tôi có tạo 1 hằng số VAR với giá trị khởi tạo bằng 0 và phương thức trừu tượng void cal(int item);. Lớp Display implement Interface này sẽ khai báo 1 biến x có kiểu int và định nghĩa lại phương thức cal(), phương thức này sẽ kiểm tra nếu giá trị của item < 2 thì sẽ gán x = hằng số VAR của Interface Calculate, ngược lại thì sẽ tính bình phương của item và gán vào x

Trong lớp Test, tôi tạo một mảng arr có kiểu dữ liệu Display và lưu trữ 3 phần tử. Vòng lặp for sẽ duyệt i từ 0 đến 2, mỗi lần duyệt sẽ khởi tạo 1 phần tử thứ i của mảng arr. Sau đó dòng code arr[0].cal(0); sẽ gọi phương thức cal() của lớp Display và vì 0 < 2 nên giá trị của x lúc này sẽ bằng VAR và bằng 0. Dòng code tiếp theo arr[1].cal(1); sẽ gọi phương thức cal() của lớp Display và vì 1 < 2 nên giá trị của biến x lúc này cũng bằng 0. Tương tự với dòng code arr[2].cal(2); ta có 2 = 2 nên x lúc này sẽ bằng 22 = 4.

Dòng code cuối cùng sẽ hiển thị 3 giá trị của x của từng phần tử trong mảng arr trên cùng 1 dòng, tức là ta sẽ có kết quả biên dịch là 0 0 4.

Kết quả biên dịch chương trình bằng Eclipse:

 

Nguồn: freetuts.net