JavaScript is required

Chương trình sẽ in ra cái gì?
class A {
final public int method1(int a, int b) {
return 0;
}
}
class B extends A {
public int method1(int a, int b) {
return 1;
}
}
public class Test {
public static void main(Strings args[]) {
B b;
System.out.println("x = " + b.method1(0, 1));
}
}

A.
x = 0
B.
x = 1
C.
Lỗi biên dịch
D.
x=10
Trả lời:

Đáp án đúng: C


Đoạn chương trình trên bị lỗi biên dịch. Lớp `A` định nghĩa phương thức `method1` là `final`, điều này có nghĩa là phương thức này không thể bị ghi đè (override) trong các lớp con. Tuy nhiên, lớp `B` lại cố gắng ghi đè phương thức `method1` của lớp `A`. Do đó, trình biên dịch sẽ báo lỗi. Ngoài ra, biến `b` trong hàm `main` chưa được khởi tạo trước khi sử dụng `b.method1(0, 1)`, dẫn đến lỗi `NullPointerException` nếu như việc ghi đè thành công.

Câu hỏi liên quan