为什么不允许在重写时缩小方法的范围
2022-09-03 03:36:27
在Java中,当我重写一个方法时,编译器会将任何缩小可见性范围的尝试标记为错误。例如:我不能将公共方法重写为受保护的方法,而我可以将受保护的方法重写为公共方法。
我很想知道这个规则背后的设计决策/思维。
在Java中,当我重写一个方法时,编译器会将任何缩小可见性范围的尝试标记为错误。例如:我不能将公共方法重写为受保护的方法,而我可以将受保护的方法重写为公共方法。
我很想知道这个规则背后的设计决策/思维。
考虑一个从 继承的类。 是公开的。现在考虑以下代码:B
A
A.m()
A obj = new B();
obj.m();
是否应允许此调用?是的,它应该,因为它是类型的对象!它也是一个类型的对象,但使用这个对象的人不一定知道。obj
A
B
类型的每个对象都必须遵守 的协定(接口)。 延长,因此也必须遵守该合同。A
A
B
A