gpt4 book ai didi

java - 更改 Java 中重写方法的访问修饰符?

转载 作者:太空狗 更新时间:2023-10-29 22:32:34 27 4
gpt4 key购买 nike

是否有理由可以更改重写方法的访问修饰符?例如,

abstract class Foo{
void start(){...}
}

然后将package-private访问修饰符改为public

final class Bar extends Foo{
@Override
public void start(){...}
}

我只是出于好奇才问这个问题。

最佳答案

Java 不允许您使访问修饰符更具限制性,因为这将违反子类实例应该可用于代替父类(super class)实例的规则。但是当谈到使访问限制较少时...好吧,也许父类(super class)是由不同的人编写的,他们没有预料到您想要使用他们的类的方式。

人们编写的程序和编程时出现的情况千差万别,语言设计者最好不要“事后猜测”程序员可能想用他们的语言做什么。如果没有充分的理由说明为什么程序员能够在子类中减少访问说明符的限制(例如),那么最好将决定权留给程序员。他们知道他们个人情况的具体情况,但语言设计者不知道。所以我认为这是 Java 设计者的一个很好的决定。

关于java - 更改 Java 中重写方法的访问修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9330001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com