Java 如何将抽象类方法的使用仅限于子类?

Java 如何将抽象类方法的使用仅限于子类?,java,abstract,Java,Abstract,我有一个问题,希望你能帮助我: 我有一个包含一些实用抽象方法的抽象类,但我希望这些方法仅限于子类,我显然不能使用私有修饰符,但受保护是不够的,因为在同一个包中也有不扩展它的类,但如果扩展方法在其中实例化,则可以使用这些方法: 我能做什么? 谢谢 你做不到。唯一的方法是以一种只有基类及其子类在包中的方式重新排列包结构。为了实现这一点,您可以将所有非子类移动到子包中——它们将看不到受保护的方法 出于好奇-你为什么需要这个?我想到的唯一原因是防止程序员出错,因为恶意代码可能会使用反射来访问这些方法。你

我有一个问题,希望你能帮助我:

我有一个包含一些实用抽象方法的抽象类,但我希望这些方法仅限于子类,我显然不能使用私有修饰符,但受保护是不够的,因为在同一个包中也有不扩展它的类,但如果扩展方法在其中实例化,则可以使用这些方法:

我能做什么?
谢谢

你做不到。唯一的方法是以一种只有基类及其子类在包中的方式重新排列包结构。为了实现这一点,您可以将所有非子类移动到子包中——它们将看不到受保护的方法


出于好奇-你为什么需要这个?我想到的唯一原因是防止程序员出错,因为恶意代码可能会使用反射来访问这些方法。

你不能这样做。唯一的方法是以一种只有基类及其子类在包中的方式重新排列包结构。为了实现这一点,您可以将所有非子类移动到子包中——它们将看不到受保护的方法


出于好奇-你为什么需要这个?我想到的唯一原因是防止程序员出错,因为恶意代码可能会使用反射来访问这些方法。

我明白了,但为什么?我的意思是,为什么Java不支持这样的东西呢?@Dea5我相信,这会使语言变得不必要的复杂。按照这个逻辑,我们可能还有十个访问修饰符-例如,限制对当前包/当前包和子包/仅对子类和超类的访问等。似乎合理。。。谢谢你的回答@顺便说一下,有些人认为应该有修饰符库,这意味着可以从同一个库(例如kotlin的模块)调用该方法。“您可以将所有非子类的类移动到子包中”是的,但不一定。使用不同的软件包就足够了。我明白了,但为什么?我的意思是,为什么Java不支持这样的东西呢?@Dea5我相信,这会使语言变得不必要的复杂。按照这个逻辑,我们可能还有十个访问修饰符-例如,限制对当前包/当前包和子包/仅对子类和超类的访问等。似乎合理。。。谢谢你的回答@顺便说一下,有些人认为应该有修饰符库,这意味着可以从同一个库(例如kotlin的模块)调用该方法。“您可以将所有非子类的类移动到子包中”是的,但不一定。使用不同的包就足够了。