当前位置: 首页 > 面试题库 >

Java覆盖方法时,为什么我可以增加但不能减少访问量?

牛经赋
2023-03-14
问题内容

Java为什么要指定覆盖方法的访问说明符可以比覆盖方法允许更多但不能更少的访问?例如,超类中的受保护实例方法可以在子类中公开,但不能私有。


问题答案:

这是OOP中的基本原则:子类是父类的完整实例,因此必须至少提供与父类相同的接口。使受保护的/公共的东西不那么明显将违反这个想法;您可以使子类无法用作父类的实例。



 类似资料:
  • 问题内容: 好的,我从很多地方和来源都听说过,每当我覆盖equals()方法时,我也需要覆盖hashCode()方法。但是请考虑以下代码 这里的输出为true,完全按照我想要的方式为false,我根本不关心重写hashCode()方法。这意味着hashCode()覆盖是一种选择,而不是每个人都说的强制性选择。 我想要第二次确认。 问题答案: 它对您有用,因为您的代码未使用任何需要API的功能(Ha

  • 本文向大家介绍Kafka 分区数可以增加或减少吗?为什么?相关面试题,主要包含被问及Kafka 分区数可以增加或减少吗?为什么?时的应答技巧和注意事项,需要的朋友参考一下 我们可以使用 bin/kafka-topics.sh 命令对 Kafka 增加 Kafka 的分区数据,但是 Kafka 不支持减少分区数。 Kafka 分区数据不支持减少是由很多原因的,比如减少的分区其数据放到哪里去?是删除,

  • 问题内容: 我正在浏览Kathe sierra编写的SCJP 6,并遇到了有关以重写方法引发异常的解释。我真的不明白。有人可以向我解释吗? 覆盖方法不得抛出比被覆盖方法声明的异常新的或更广泛的检查异常。例如,声明FileNotFoundException的方法不能被声明SQLException,Exception或任何其他非运行时异常的方法覆盖,除非它是FileNotFoundException的

  • 问题内容: 为什么无法覆盖静态方法? 如果可能,请使用示例。 问题答案: 覆盖取决于拥有类的实例。多态性的重点是可以对一个类进行子类化,并且实现那些子类的对象对于在超类中定义的相同方法(在子类中被重写)将具有不同的行为。静态方法未与类的任何实例相关联,因此该概念不适用。 影响Java设计的因素有两个。一个是对性能的关注:Smalltalk批评它太慢(垃圾回收和多态调用是其中的一部分),Java的创

  • 问题内容: 大家好!我有一个简单的问题。…为什么我可以从main方法中获得一个私有变量?我知道,我在包含类中,但这是主要的。我相信主体不是包含它的类的一部分……那么我不会去找私人成员,但是我可以……为什么?请帮助… thx 问题答案: Main是您的类的一部分,您已经在类中声明了它:) main不是您的对象的一部分,它不会是您从该类创建的对象的任何部分,但它仍然是该类的一部分。这对于任何静态函数都

  • 问题内容: 这是受保护方法的文档: 我制作了这个小类来扩展scoreToSeq方法来自的类: 问题答案: (编辑:他们callmemorty的答案提供了在您的情况下避免该问题的实用建议。此答案提供了您为什么必须遵循该建议的原因,即,为什么语言是这样设计的。) 您只能访问与访问代码(或子类)具有相同类型的另一个对象的受保护成员,即使该成员是在超类型中 声明 的也是如此。 根据Java语言规范的第6.