JavaScript is required

Đoạn mã sau có lỗi biên dịch nào? Chọn một câu trả lời
class Student {
public String sayHello() {
return "Student";
}
}
public class Man extends Student {
public int sayHello() {
return 0;
}
}

A.
Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student return type int is not compatible with java.lang.String
B.
Không có lỗi biên dịch.
C.
Có lỗi biên dịch:sayHello() in Man cannot override sayHello() in Student because it is final
D.
Có lỗi biên dịch:sayHello() in Man and in Student has the same access modifier
Trả lời:

Đáp án đúng: A


Đoạn mã trên có lỗi biên dịch vì phương thức `sayHello()` trong lớp `Man` cố gắng ghi đè (override) phương thức `sayHello()` trong lớp `Student`, nhưng kiểu trả về lại không tương thích. Phương thức `sayHello()` trong lớp `Student` trả về một `String`, trong khi phương thức `sayHello()` trong lớp `Man` trả về một `int`. Trong Java, khi ghi đè một phương thức, kiểu trả về phải giống hoặc là một kiểu con (subtype) của kiểu trả về của phương thức gốc. Do đó, trình biên dịch sẽ báo lỗi vì kiểu `int` không tương thích với `String` trong ngữ cảnh ghi đè này.

Câu hỏi liên quan