接口中受Java保护的方法?

接口中受Java保护的方法?,java,android,Java,Android,我试图创建一个接口,在该接口中,它的方法受到保护,或者只对实现它的类可见 问题是这个。我有两个类,它们或多或少做着完全相同的事情,但参数和行为不同,但实际采取的步骤是相同的 我想我有两个类似的类,所以让我们创建一个接口,这两个类都实现。应该可以吧?是的。它可以做到这一点,但有一个严重的缺陷,我的意思是,它在这两个类中覆盖的所有方法现在都是肉眼可见的 可以访问它们,因为它们被定义为“公共”。还有封装:( 我想到的另一个解决方案是使用一个抽象类,但是等等,您只能扩展一个抽象类,我正在使用的两个类已经

我试图创建一个接口,在该接口中,它的方法受到保护,或者只对实现它的类可见

问题是这个。我有两个类,它们或多或少做着完全相同的事情,但参数和行为不同,但实际采取的步骤是相同的

我想我有两个类似的类,所以让我们创建一个接口,这两个类都实现。应该可以吧?是的。它可以做到这一点,但有一个严重的缺陷,我的意思是,它在这两个类中覆盖的所有方法现在都是肉眼可见的

可以访问它们,因为它们被定义为“公共”。还有封装:(


我想到的另一个解决方案是使用一个抽象类,但是等等,您只能扩展一个抽象类,我正在使用的两个类已经扩展了一个类(在我的例子中是一个android服务类)这一想法也不攻自破。

这是正确的。
接口是类接口的定义,因此您不应该担心实现细节,例如接口是如何实现的。即使是受保护的方法

在大多数情况下,这可以通过使用抽象类来解决。如果您的两个实现已经扩展了另外两个不同的类,那么您可能需要在代码中稍微“重复”一下自己


虽然我不确定我是否理解你的问题。当你说这些类在很多方面表现相同时,我假设你想在一个普通的超类中写这个行为,对吗?但是如果你想把它放在一个普通的超类中,这两个类必须扩展这个类。在这种情况下,你可以简单地做这个超类抽象,就像你想的那样描述,否?我的意思是,即使接口可以声明受保护的方法,您仍然无法共享此接口中的公共实现部分。

这是正确的。
接口是类接口的定义,因此您不应该担心实现细节,例如接口的实现方式甚至在受保护的方法方面也没有

在大多数情况下,这可以通过使用抽象类来解决。如果您的两个实现已经扩展了另外两个不同的类,那么您可能需要在代码中稍微“重复”一下自己


虽然我不确定我是否理解你的问题。当你说这些类在很多方面表现相同时,我假设你想在一个普通的超类中写这个行为,对吗?但是如果你想把它放在一个普通的超类中,这两个类必须扩展这个类。在这种情况下,你可以简单地做这个超类抽象,就像你想的那样描述,否?我的意思是,即使一个接口可以声明受保护的方法,您仍然无法共享此接口中的公共实现部分。

如果您的两个类都更好地扩展了服务类,那么您可以声明一个抽象的超类,而不是扩展服务类。因此,您不必担心inheritence结构以及方法的可见性。

如果两个类都更好地扩展了服务类,那么您可以声明一个抽象的超类来代替扩展服务类。因此,您不必担心继承结构以及方法的可见性。

我不确定您的问题陈述是否正确t:

我在想我有两个相似的 类,所以让我们创建一个 两个类的接口 工具,应该没问题吧?好吧 是的。它确实起作用,但有一种严肃的态度 缺陷,全部,我指的是全部 方法,它在这两个 类现在对裸用户可见 眼睛

您定义的接口是实现类的公共“面”。除了要向调用方公开的方法之外,接口中不需要任何其他内容,这些方法可以合理地公开

那么你所说的“它覆盖的所有方法”是什么意思呢?接口不覆盖任何东西,那么“它”是什么意思呢在你的句子中。我不知道如何使用接口公开任何不需要公开的内容。在概念上,将接口标记为受保护只意味着类本身可以看到方法。我不知道这有多大用处


也许您关心的是接口所公开的内容。关键问题是谁在使用该接口。您可以使用默认访问权限(既不是公共的,也不是私有的)声明该接口,从而将其限制为同一包中的类。

我不确定您的问题陈述是否正确:

我在想我有两个相似的 类,所以让我们创建一个 两个类的接口 工具,应该没问题吧?好吧 是的。它确实起作用,但有一种严肃的态度 缺陷,全部,我指的是全部 方法,它在这两个 类现在对裸用户可见 眼睛

您定义的接口是实现类的公共“面”。除了要向调用方公开的方法之外,接口中不需要任何其他内容,这些方法可以合理地公开

那么你所说的“它覆盖的所有方法”是什么意思呢?接口不覆盖任何东西,那么“它”是什么意思呢在你的句子中。我不知道如何使用接口公开任何不需要公开的内容。在概念上,将接口标记为受保护只意味着类本身可以看到方法。我不知道这有多大用处


也许您关心的是接口所公开的内容。关键问题是谁在使用该接口。您可以使用默认访问权限声明接口(既不是公共的,也不是私有的)因此仅限于同一包中的类。

实现可能不同,但实际方法调用将完全相同,即使用接口的理想方法。例如,我有一个名为parseXML()的方法,两个类都需要解析一些xml数据