首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免在实现java中公共接口的两个已扩展类中出现重复的方法。

避免在实现java中公共接口的两个已扩展类中出现重复的方法。
EN

Stack Overflow用户
提问于 2017-04-10 08:48:30
回答 2查看 730关注 0票数 3

我曾在一次java面试中被问到这个问题,但我在任何地方都找不到答案。

代码语言:javascript
复制
X Y
| |
A B

Interface I{
m1();
}

A类和B类分别由X类和Y类扩展而来。

X和Y不能更改。A和B实现接口I,方法m1()在两者中具有相同的定义。

如何避免编写重复的代码。

不能使用Java 8,因为我们可以在java-8接口中定义方法。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-04-10 09:09:59

这是一个可怕的问题,但解决这个问题的好方法是在A.javaB.java中创建一个静态方法(它包含m1的功能),然后在A#m1B#m1中简单地调用该方法。

这比必须创建另一个类简单得多。

A.java

代码语言:javascript
复制
@Override
public void m1() {
    methodHelper();
}

public static void methodHelper() {
    // Code goes here.
}

B.java

代码语言:javascript
复制
@Override
public void m1() {
    A.methodHelper();
}
票数 2
EN

Stack Overflow用户

发布于 2017-04-10 09:11:23

我同意加布·塞肯说的话。

让另一个类(C类)实现接口中定义的m1()方法。

类A和类B都将有一个类C的实例。这将允许您使用m1()方法,在该方法中,类C在没有类A和类B的情况下实现了重复的m1()方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43313495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档