JavaScript is required

Đoạn mã sau có lỗi biên dịch nào?
class Student {
public String sayHello() {
return "Student";
}
}
public class Man extends Student {
public String sayHello() {
return "man";
}
public static void main(String[] args) {
Man m = new Student();
System.out.println(m.sayHello());
}
}

A.
Có lỗi biên dịch:Incompatible type, requiered Man, found Student.
B.
Không có lỗi biên dịch. In ra màn hình "man"
C.
Có lỗi biên dịch:access modified of sayHello in Student and Man are different
D.
Không có lỗi biên dịch. In ra màn hình "student"
Trả lời:

Đáp án đúng: A


Đoạn mã có lỗi biên dịch vì dòng `Man m = new Student();`. Trong Java, bạn không thể gán một đối tượng lớp cha (Student) cho một biến kiểu lớp con (Man). Điều này là do lớp con có thể có các thuộc tính và phương thức mà lớp cha không có, do đó việc gán như vậy sẽ dẫn đến lỗi. Các lựa chọn khác: - B. Sai vì có lỗi biên dịch. - C. Sai vì access modifier không phải là nguyên nhân gây lỗi ở đây. Cả hai phương thức `sayHello` đều là `public`. - D. Sai vì có lỗi biên dịch và kể cả khi không lỗi biên dịch, kết quả in ra cũng không phải là "student" nếu dòng gán hợp lệ.

Câu hỏi liên quan