2017-04-10 57 views
3

我在java面試中被問到了這個問題,但我無法在任何地方找到答案。在java中實現通用接口的兩個已經擴展的類中避免重複的方法

X Y 
| | 
A B 

Interface I{ 
m1(); 
} 

A類和B類分別從類X和Y類延長。

X和Y不能更改。 A和B實現接口I和方法m1()在兩者中具有相同的定義。

如何避免重複編寫代碼。

因爲我們可以在java-8接口中定義方法,所以不能使用Java 8。

在此先感謝。

+0

也許使用代理...:/ – MadProgrammer

+5

您可以創建一個具有m1()函數的類C,並擁有由A和B持有的C實例。當然,假定m1()實現對於A和B來說都是足夠相似的。在這種情況下,你的類層次可能是錯誤的。在現實世界中,我不會花太多時間擔心這一點,這似乎是一個可怕的問題。 –

+3

代表,代表,代表。 – EJP

回答

2

這是一個可怕的問題,而是去了解它是使在任何A.javaB.java一個靜態方法(持有M1的功能),並簡單地調用該方法在A#m1B#m1的好辦法。

這比創建另一個類要簡單得多。

A.java

@Override 
public void m1() { 
    methodHelper(); 
} 

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

B.java

@Override 
public void m1() { 
    A.methodHelper(); 
} 
0

我什麼加布Sechan不得不說同意。

讓另一個類(Class C)實現接口中定義的m1()方法。

A類和B類都有一個C類的實例。這將允許您使用m類()方法,其中類C實現而不具有類A和類B具有重複的m1()方法。

相關問題