为什么不能降低方法在 Java 子类中的可见性?
2022-09-01 01:57:56
为什么在子类中重写方法时降低方法的可见性时,编译器会给出错误消息?
为什么在子类中重写方法时降低方法的可见性时,编译器会给出错误消息?
因为如果允许这样做,则可能会出现以下情况:
类子继承自类父级。父方法有一个公共方法,Sub使该方法私有。现在,下面的代码可以正常编译,因为 声明的类型是 Parent:foo
bar
Parent bar = new Sub();
bar.foo();
然而,目前尚不清楚这应该如何表现。一种可能性是让它导致运行时错误。另一种方法是简单地允许它,这样就可以通过仅强制转换为父类来从外部调用私有方法。这两种选择都不可接受,因此不允许。