tôi nhận này lỗi biên dịch:Không thể làm giảm tầm nhìn của phương pháp phương pháp được thừa hưởng từ cha mẹ
You cannot reduce the visibility of a inherited method.
Tôi có đoạn code sau
class Parent {
public void func() {
System.out.println("in Parent");
}
}
public class TestClass extends Parent {
public static void main(String args[]) {
parent obj=new TestClass();
obj.addTest();
}
private void func() {
System.out.println("in child");
}
}
Đây tầng lớp phụ huynh có func()
phương pháp đó là công khai và ghi đè bởi các subclass TestClass
là riêng tư. Bây giờ trình biên dịch ném lỗi mà tôi không thể làm giảm khả năng hiển thị. Để nói về mặt kỹ thuật, bất cứ khi nào tôi tạo đối tượng của TestClass
gán cho đối tượng kiểu cha, vì phương thức func()
bị ghi đè, hàm func() của TestClass sẽ được gọi là luôn, vậy tại sao chúng ta nên quan tâm đến khả năng hiển thị? lý do đằng sau lỗi này là gì? Ai đó có thể giải thích rõ ràng cho tôi không?
Cảm ơn Bohemain. Tôi có lý do. Cảm ơn bạn đã chỉ ra các tiêu chuẩn đặt tên. – Mojoy
Hi .. Điều này làm cho tôi suy nghĩ tại sao tôi không thể sửa đổi bảo vệ trong lớp con cho một phương pháp được công khai trong lớp siêu? Kể từ khi sửa đổi bảo vệ có thể được truy cập trong gói và các loại phụ của gói bất kỳ !! – Mojoy
Các phương thức 'protected' không hiển thị đối với các lớp tùy ý khác, nhưng phương thức' public' của siêu là, vì vậy cùng một lý do được áp dụng. * Bất kỳ * giảm khả năng hiển thị là một lỗi. – Bohemian