Cho đoạn mã sau. Hãy chọn từ khóa chỉ phạm vi hợp lệ đứng trước aMethod() ở dòng 8
class SuperDupper {
void aMethod() {}
}
class Sub extends SuperDupper {
void aMethod() {}
}
class SuperDupper {
void aMethod() {}
}
class Sub extends SuperDupper {
void aMethod() {}
}
void aMethod() {}
}
class Sub extends SuperDupper {
void aMethod() {}
}
Trả lời:
Đáp án đúng: D
Trong Java, khi một phương thức được định nghĩa trong lớp cha (SuperDupper) và được ghi đè (override) trong lớp con (Sub), phạm vi truy cập của phương thức ghi đè phải bằng hoặc rộng hơn phạm vi truy cập của phương thức gốc.
Ở lớp SuperDupper, phương thức aMethod() được khai báo với phạm vi mặc định (default) vì không có từ khóa phạm vi nào được chỉ định. Điều này có nghĩa là phương thức này chỉ có thể được truy cập từ các lớp trong cùng một package.
Ở lớp Sub, phương thức aMethod() đang ghi đè phương thức aMethod() của lớp SuperDupper. Do đó, phạm vi truy cập của phương thức này phải bằng hoặc rộng hơn phạm vi mặc định. Các phạm vi hợp lệ có thể được sử dụng là:
* `protected`: Cho phép truy cập từ các lớp trong cùng package và các lớp con (kể cả khác package).
* `public`: Cho phép truy cập từ bất kỳ đâu.
* `default`: Cho phép truy cập từ các lớp trong cùng một package
Vì vậy, tất cả "default", "protected" và "public" đều có thể là phạm vi hợp lệ cho aMethod() ở dòng 8.





