Đoạn mã sau có lỗi biên dịch nào?
class Student {
public int getAge() {
return 10;
}
}
public class Man extends Student {
protected int getAge(int added) {
return super.getAge() + added;
}
}
class Student {
public int getAge() {
return 10;
}
}
public class Man extends Student {
protected int getAge(int added) {
return super.getAge() + added;
}
}
Trả lời:
Đáp án đúng: A
Đoạn mã có lỗi biên dịch do phương thức `getAge(int added)` trong lớp `Man` có phạm vi truy cập `protected` và nạp chồng (overload) phương thức `getAge()` (không tham số) từ lớp `Student` có phạm vi truy cập `public`. Trong Java, khi ghi đè hoặc nạp chồng một phương thức, phạm vi truy cập của phương thức con (trong trường hợp này là `getAge(int added)` trong `Man`) không được thu hẹp so với phương thức cha (trong trường hợp này là `getAge()` trong `Student`). Vì `protected` hẹp hơn `public`, trình biên dịch sẽ báo lỗi.
Các đáp án khác không chính xác vì:
- A sai vì có lỗi biên dịch.
- C sai vì lỗi không liên quan đến việc gọi `super()` trong constructor.
- D sai vì lỗi không phải do đối số truy cập mà do phạm vi truy cập khác nhau giữa lớp cha và lớp con khi overload phương thức.
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
