当前位置: 首页 > 面试题库 >

为什么父类和子类都实现相同的接口?

长孙嘉容
2023-03-14
问题内容

继承了一些旧版Java(1.4)代码,并且此设计决策会定期出现。我不知道是否有任何目的或理由。

public interface SoapFacade extends iConfigurable{ }

public class SoapFacadeBase implements SoapFacade{
...
}

public class SoapFacadeImpl extends SoapFacadeBase implements SoapFacade{
...
}

据我了解接口(并且我的实验得到了加强),使父级和子级实现相同的接口是没有目的的。在这种情况下,from
SoapFacade中的所有内容都在中实现SoapFacadeBase,而in中的方法在iConfigurable中实现SoapFacadeImpl。然而,这并不创造需要有SoapFacadeImpl落实SoapFacade

关于接口,有什么我不知道的东西会给这种模式带来一些目的或好处?除了缺乏清晰性之外,还有其他潜在成本会促使其重构吗?还是应该为了清楚/简单而对其进行重构?


问题答案:

据我了解接口(并且我的实验得到了加强),使父级和子级实现相同的接口是没有目的的。

否。从技术上讲,它是完全多余的。

但是,它 确实 记录了您打算SoapFacadeImpl成为a
的事实,SoapFacade并且可以确保在您(或其他人)决定implements SoapFacade从基类中删除时,得到编译错误。

您可以在标准Java Collections
API中随处看到此模式。ArrayList工具List虽然其基类(AbstractList)已经,确实。同样适用于HashSet/
AbstractSetSet接口。



 类似资料:
  • 问题内容: @Entity public class Husband implements Serializable { 广义上是什么? 类为什么实现接口? 为什么丈夫成员一个人只有@OnetoOne(mappedBy =“ Wife”),而妻子成员却没有@OnetoOne(mappedBy =“ husband”) 问题答案: 广义上讲,序列化是Java为开发人员提供的将任何对象的状态持久保存到

  • 但是,我也看到了一种奇怪的方法来重写接口方法: 3.子类只实现接口,但由父类重写接口中的方法: 覆盖接口方法的第三种方法在android框架源代码中非常常见,例如: 这样设计的原因是什么?

  • 问题内容: 考虑以下类: 由于多个的声明,in 的声明不应该给出编译错误吗? 问题答案: 阴影 (或 隐藏物 )。 这是合法的Java,但应避免使用。我希望您的IDE可以为您提供警告。 但是请注意,这只是一个问题,因为您已经向世界公开了一个 变量 。如果确保所有变量都是私有变量(将方法的API与字段的实现分开),那么父级和子级都具有相同的字段名就没关系- 子级不会仍然能够看到父母的字段。如果将方法

  • 问题内容: 为什么Java中的许多Collection类都扩展Abstract类并实现接口(也由给定的Abstract类实现)? 例如,class t扩展了并且也实现了,但是已经实现了。 问题答案: 这是记住此类真正实现该接口的一种方式。 它不会有任何不良影响,并且可以帮助您理解代码,而无需遍历给定类的完整层次结构。

  • 问题内容: 我有下表: 我想让Folder类具有父子关系。 问题答案: 我相信正确的映射将是: 该会的工作只有当每个家长有最多一个孩子,上面的代码适用于更一般的情况下,父母可以有许多儿童。另外,为简单起见,我省略了get / set方法。

  • 我基本上是java初学者,我想问stackoverflow论坛一个简单的问题。我已经在这里检查了类似的问题,但我没有找到想要的答案,链接:实现接口的类和该接口之间有任何关系吗? 我们知道,如果猫延伸到动物身上,这是有关系的。所以猫是一种动物(但不一定非如此。动物也是一条狗……)。我们将这种关系称为“is-a”-继承。 如果我们有另外两个班:女孩和糖果,如果女孩班有糖果的例子,那么我们将这种关系命名