【问题标题】:A query regarding abstract class in java [duplicate]关于java中抽象类的查询[重复]
【发布时间】:2017-08-03 19:54:54
【问题描述】:

我正在编写一个程序,其中特定类中有很多方法,因此我决定编写一个抽象类来帮助跟踪方法。

现在,考虑一下:我在抽象类中声明了一个抽象方法,而在另一个类(它扩展了抽象类)中,我想覆盖这个方法,但访问权限降低为私有。在这里,编译器出现了问题。它表示正在尝试分配较弱的访问权限,这是不允许的。如果我尝试将抽象类中的方法声明为受保护(我还在子类中将私有方法更改为受保护),它表示修饰符 abstract 和 protected 不能一起使用。

那么,我该怎么办?我是否必须在两个类中将方法包访问或公开?如果是这样,我没有办法将这些方法声明为私有吗?

请注意,我只要求抽象类,而不是一般的所有类。

【问题讨论】:

  • 抽象类如何帮助“跟踪方法”?
  • 你绝对可以有一个protected abstract 方法。
  • 顺便说一句,这看起来像XY Problem。您可能应该详细说明您要完成的工作。
  • @ScottHunter 为什么不呢?比如说,你在一个特定的类中有 12 个方法。声明一个抽象类有助于在一个地方查看所有方法定义,还有助于跟踪它们的签名和返回类型。
  • lol @WrichikBasu 使用 IDE 来探索和导航所有类方法,不是吗?

标签: java abstract-class


【解决方案1】:

你是什么意思它不能是protected abstract - 当然可以

而你想做的事情基本上是首先被编译器和语言本身禁止的。

【讨论】:

    【解决方案2】:

    您的问题的答案是:您无法降低父类中声明的方法的可见性。

    如果您可以通过在抽象父类中“跟踪方法”来重申您想要完成的任务,您可能会得到不同的解决方案。

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2018-07-11
      • 2011-07-13
      • 2011-12-05
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多