|
1
3
如果您的两个类都能更好地扩展服务类,那么您可以声明一个抽象的超级类,而不是扩展服务类。所以您可以看到,您不必担心继承结构以及方法的可见性。 |
![]() |
2
3
没错。安
在大多数情况下,这是通过使用抽象类来解决的。如果您的两个实现已经扩展了另外两个不同的类,那么您可能需要在代码中稍微“重复”一下。 尽管我不确定我理解你的问题。当你说这些类在许多方面的行为都相同时,我假设你想把这个行为写在一个公共的超类中,对吗?但是如果你想把它放在一个公共的超类中,这两个类必须扩展这个类。在这种情况下,你可以简单地做这个超类抽象,如你所描述的,不?我的意思是,即使接口可以声明受保护的方法,您仍然无法共享这个接口中的公共实现部分。 |
![]() |
3
0
我不确定你的问题陈述是否正确:
您定义的接口是实现类的公共“面”。除了要向调用方公开的方法之外,接口中没有任何要求,这些方法可以合理地公开。 那么,你所说的“它覆盖的所有方法”是什么意思?接口不覆盖任何东西,所以你的句子中的“它”是什么意思?我不知道如何使用该接口公开任何不需要公开的内容。在概念上,标记受保护的接口只意味着类本身可以看到方法。我不明白这有多大用处。 也许你关心的是什么是暴露的 通过 接口。关键问题是谁在使用这个接口。您可以使用默认访问(非公共或私有)来声明接口,从而限制在同一个包中的类。 |