Java中的接口:无法使实现的方法受到保护或私有
2022-09-01 11:44:41
我知道接口必须是公开的。但是,我不想那样。
我希望我实现的方法只能从它们自己的包中访问,所以我希望我实现的方法受到保护。
问题是我无法使接口或实现的方法受到保护。
什么是解决方法?是否有与此问题相关的设计模式?
从Java指南中可以看出,抽象类也无法完成这项工作。
我知道接口必须是公开的。但是,我不想那样。
我希望我实现的方法只能从它们自己的包中访问,所以我希望我实现的方法受到保护。
问题是我无法使接口或实现的方法受到保护。
什么是解决方法?是否有与此问题相关的设计模式?
从Java指南中可以看出,抽象类也无法完成这项工作。
您的类可以使用包保护,并且仍然可以实现接口:
class Foo implements Runnable
{
public void run()
{
}
}
如果你希望某些方法受到保护/打包,而其他方法则不受保护,这听起来像是你的类有多个责任,应该分成多个。
阅读对此回复和其他回复的评论后进行编辑:
如果您以某种方式认为某个方法的可见性会影响调用该方法的能力,请再想一想。在不极端的情况下,您无法阻止某人使用反射来识别类的方法并调用它们。但是,这不是问题:除非有人试图破解你的代码,否则他们不会调用随机方法。
相反,将私有/受保护的方法视为定义子类的协定,并使用接口来定义与外部世界的协定。
哦,对于决定我的例子应该使用K&R支撑的人:如果它在服务条款中指定,当然。否则,你找不到更好的时间吗?