Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能总结一下Java接口的可见性选择吗?_Java_Oop_Api Design - Fatal编程技术网

有人能总结一下Java接口的可见性选择吗?

有人能总结一下Java接口的可见性选择吗?,java,oop,api-design,Java,Oop,Api Design,我有两个问题: 1) 何时使用包专用接口 2) 有没有一种方法可以使一个公共接口在其包外关闭以供实现?1)当该接口仅在包的范围内需要时。例如,接口可以使代码更具可读性,但包的调用者不需要它 2) 不,这是不可能的。有关更多信息,请参见此。接口不定义任何实现。那么,如何关闭它以实现呢?1)当接口仅在包的范围内需要时。例如,接口可以使代码更具可读性,但包的调用者不需要它 2) 不,这是不可能的。有关更多信息,请参见此。接口不定义任何实现。那么,您如何关闭它来实现呢?1)您的包中可能有多个类使用的实用

我有两个问题:

1) 何时使用包专用接口

2) 有没有一种方法可以使一个公共接口在其包外关闭以供实现?

1)当该接口仅在包的范围内需要时。例如,接口可以使代码更具可读性,但包的调用者不需要它

2) 不,这是不可能的。有关更多信息,请参见此。接口不定义任何实现。那么,如何关闭它以实现呢?

1)当接口仅在包的范围内需要时。例如,接口可以使代码更具可读性,但包的调用者不需要它

2) 不,这是不可能的。有关更多信息,请参见此。接口不定义任何实现。那么,您如何关闭它来实现呢?

1)您的包中可能有多个类使用的实用程序方法,这些方法不应该在外部调用。或者,它们可能只被一个类所需要,但是这个类太大了,为了可维护性,您需要将一些方法移动到另一个类中

2) 我必须尝试一下(对不起,我现在要赶出门了),但是通过在接口中声明一个受保护的默认构造函数,您可能可以有效地做到这一点。

1)您的包中可能有多个类使用的实用工具方法,这些方法不应该在外部调用。或者,它们可能只被一个类所需要,但是这个类太大了,为了可维护性,您需要将一些方法移动到另一个类中


2) 我必须尝试一下(对不起,我现在要赶出门了),但通过在接口中声明一个受保护的默认构造函数,您可能可以有效地做到这一点。

包专用接口仅在策略模式的此类实现中有用,其中,您可能希望使用多个实现,但不希望世界知道这些类型。

包专用接口仅在策略模式的此类实现中有用,其中,您可能希望使用多个实现,但不希望世界知道这些类型。

请注意,您不能在接口中声明构造函数。上面的注释是正确的,如果它是公共的,它可以在任何地方实现。注意,您不能在接口中声明构造函数。上面的注释是正确的,如果它是公共的,它可以在任何地方实现。