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 (câu hỏi 2)
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.
package baitap; public interface Calculate { int VAR = 0; void cal(int item); }
package baitap; public class Display implements Calculate { int x; @Override public void cal(int item) { if (item < 2) x = VAR; else x = item * item; } }
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.
Bài viết này được đăng tại [free tuts .net]
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:
Câu hỏi thường gặp liên quan:
- Java - Liệt kê sự khác nhau giữa Interface và lớp Abstract (lớp trừu tượng).
- Java - Interface và lớp trừu tượng được sử dụng trong những trường hợp nào?
- Java - Bạn hãy nêu lỗi của đoạn chương trình dưới đây và giải thích vì sao.
- Java - Hãy chọn đáp án thể hiện kết quả đúng của đoạn chương trình cho sẵn dưới đây (câu hỏi 1)
- 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 (câu hỏi 2)