有人能总结一下Java接口的可见性选择吗?
我有两个问题: 1) 何时使用包专用接口 2) 有没有一种方法可以使一个公共接口在其包外关闭以供实现?1)当该接口仅在包的范围内需要时。例如,接口可以使代码更具可读性,但包的调用者不需要它 2) 不,这是不可能的。有关更多信息,请参见此。接口不定义任何实现。那么,如何关闭它以实现呢?1)当接口仅在包的范围内需要时。例如,接口可以使代码更具可读性,但包的调用者不需要它 2) 不,这是不可能的。有关更多信息,请参见此。接口不定义任何实现。那么,您如何关闭它来实现呢?1)您的包中可能有多个类使用的实用程序方法,这些方法不应该在外部调用。或者,它们可能只被一个类所需要,但是这个类太大了,为了可维护性,您需要将一些方法移动到另一个类中 2) 我必须尝试一下(对不起,我现在要赶出门了),但是通过在接口中声明一个受保护的默认构造函数,您可能可以有效地做到这一点。1)您的包中可能有多个类使用的实用工具方法,这些方法不应该在外部调用。或者,它们可能只被一个类所需要,但是这个类太大了,为了可维护性,您需要将一些方法移动到另一个类中有人能总结一下Java接口的可见性选择吗?,java,oop,api-design,Java,Oop,Api Design,我有两个问题: 1) 何时使用包专用接口 2) 有没有一种方法可以使一个公共接口在其包外关闭以供实现?1)当该接口仅在包的范围内需要时。例如,接口可以使代码更具可读性,但包的调用者不需要它 2) 不,这是不可能的。有关更多信息,请参见此。接口不定义任何实现。那么,如何关闭它以实现呢?1)当接口仅在包的范围内需要时。例如,接口可以使代码更具可读性,但包的调用者不需要它 2) 不,这是不可能的。有关更多信息,请参见此。接口不定义任何实现。那么,您如何关闭它来实现呢?1)您的包中可能有多个类使用的实用
2) 我必须尝试一下(对不起,我现在要赶出门了),但通过在接口中声明一个受保护的默认构造函数,您可能可以有效地做到这一点。包专用接口仅在策略模式的此类实现中有用,其中,您可能希望使用多个实现,但不希望世界知道这些类型。包专用接口仅在策略模式的此类实现中有用,其中,您可能希望使用多个实现,但不希望世界知道这些类型。请注意,您不能在接口中声明构造函数。上面的注释是正确的,如果它是公共的,它可以在任何地方实现。注意,您不能在接口中声明构造函数。上面的注释是正确的,如果它是公共的,它可以在任何地方实现。