Đ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());
}
}
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());
}
}
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

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
