gpt4 book ai didi

java - 具有包访问的抽象方法的继承

转载 作者:搜寻专家 更新时间:2023-10-31 20:18:28 24 4
gpt4 key购买 nike

根据 JLS 的“8.1.1.1”部分,我们有:

如果满足以下任一条件,则类 C 具有抽象方法:

• C 的任何成员方法(§8.2)——声明的或继承的——是摘要。

• C 的任何父类(super class)都有一个声明为包访问的抽象方法,并且不存在覆盖 C 或 C 抽象方法的方法C 的父类(super class)

有趣的是,为什么我们在这里有第二种选择。特别是,为什么我们有确切的“包访问”。那么“公共(public)”或“ protected ”方法呢?

最佳答案

从最私有(private)到最开放的顺序,java 修饰符依次为:

  • 私有(private)
  • protected
  • 公开

子类不能继承另一个包中父类的包方法。因此,根据规则 1,从这样的父类继承的类将不是抽象的。因此,第二条规则的存在是为了解决子类从抽象父类继承并且无法提供抽象包方法的实现的情况。

这是一种荒谬的情况,我绝不会期望在任何地方的任何程序中看到这种情况。但是必须完全指定语言,否则您可能会遇到一个奇怪的错误,该错误允许实例化具有未定义方法的类。

关于java - 具有包访问的抽象方法的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31930173/

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