java - 如何在同一个包中隐藏类方法
问题描述
所以我有一个名为 ABC 的包,其中包含 A 类、B 类和 C 类。现在我的主类在包之外,并调用了一个名为 show() 的 A 类方法,这是一个公共静态方法。基本上,A 类就像包 ABC 的网关。现在我有 C 类扩展 B 类,并且我在 B 类中有一个名为 execute() 的抽象方法,该方法在 C 类中被覆盖。现在 execute() 的访问修饰符受到保护。现在我无法从我想要的 main 访问 execute() 但我仍然可以从 Class A 访问它,因为它在同一个包中。如何在同一个包中隐藏execute,即如何在A 类中隐藏execute() 但仍然能够在C 类中访问它?
解决方案
execute()
您可以从类 A 中隐藏 的唯一方法是private
在类 C 中创建它。但由于execute()
是类 B 中的抽象方法,因此这种组合是非法的(private
+ abstract
)。即使您将其设置为受保护,您也无法覆盖它并将其private
设置为 B 类,如下例所示:
abstract class B
{
protected abstract void execute();
}
和 :
class C
{
@Override
private void execute() {} // not working
}
因为在重写方法时分配较弱的访问权限是非法的。
推荐阅读
- mongodb - 如何使用 Spring Boot 从 MonogoDb 获取准确的 id
- php - php函数内爆换行的问题
- batch-rename - 为什么这只是在提示 id 后关闭 cmd?
- here-api - {状态:401,消息:“无效的 app_id app_code 组合”}
- python - 熊猫,紧凑的数据框 - 合并多列
- gsm - 我可以将 Android 下载到 GSM 套件吗?
- python - 使用 SQLAlchemy 和 Flask 时数据库存储在哪里?
- javascript - 如何知道哪个站点正在运行我的模块?
- php - echo 和 return 有什么区别
- coq - 我可以在 coq 中打印未完成证明的部分定义吗?