我曾在一次java面试中被问到这个问题,但我在任何地方都找不到答案。
X Y
| |
A B
Interface I{
m1();
}A类和B类分别由X类和Y类扩展而来。
X和Y不能更改。A和B实现接口I,方法m1()在两者中具有相同的定义。
如何避免编写重复的代码。
不能使用Java 8,因为我们可以在java-8接口中定义方法。
提前谢谢。
发布于 2017-04-10 09:09:59
这是一个可怕的问题,但解决这个问题的好方法是在A.java或B.java中创建一个静态方法(它包含m1的功能),然后在A#m1和B#m1中简单地调用该方法。
这比必须创建另一个类简单得多。
A.java
@Override
public void m1() {
methodHelper();
}
public static void methodHelper() {
// Code goes here.
}B.java
@Override
public void m1() {
A.methodHelper();
}发布于 2017-04-10 09:11:23
我同意加布·塞肯说的话。
让另一个类(C类)实现接口中定义的m1()方法。
类A和类B都将有一个类C的实例。这将允许您使用m1()方法,在该方法中,类C在没有类A和类B的情况下实现了重复的m1()方法。
https://stackoverflow.com/questions/43313495
复制相似问题