2013-06-27 32 views
-1

我有多個java文件,我正在使用許多相同的方法。截至目前,當我更新任何方法時,我將不得不在其他文件中找到該方法並手動更新它們。我想知道如何通過從「主文件」中實現方法來實現這一點,該文件將保存我普遍使用的許多不同方法的主體。在我的研究中,我認爲我可以通過接口來做到這一點,但是當我創建一個接口時,它不允許我添加一個主體...因此,顯然我在那裏做了錯誤或錯誤地使用了接口。無論如何,實現這一目標最好的是什麼?從類中的另一個文件實現方法?

+0

考慮使用ab抽象類代替接口。關於這個主題的很好的閱讀:[鏈接](http://stackoverflow.com/q/761194/335858)。 – dasblinkenlight

回答

0

如果這些類是相關的並且存在一個父子關係,那麼您可以在您的父類(也許是抽象的)中擁有一個方法,該方法將包含此通用代碼。

如果類是不相關的,但它們仍然有一些共同的代碼,那麼將通用代碼移動到一個可用類是個好主意。

只有看到代碼才能提供更多評論。

+0

嗯,是的,我試圖將它移動到一個「工具類」,併成功地在所有其他文件中實現該類,以便可以調用「工具類」方法,而不必將整個主體寫入不同的文件。那麼我該怎麼做...?這實際上是個問題...... – user2510325

+0

@ user2510325如果您正在實施實用程序類,那麼只需將所有這些方法制作爲公共靜態。在所有其他需要該方法的類中,以靜態的方式調用它,就像Utilityclass.commonMethod()一樣。 –

0

這聽起來像你需要使用父(可能抽象)和子類。

父類:

public class Parent { 
    public void method1() { 
      System.out.println("You can call this method from Child"); 
    } 
} 

子類:

public class Child extends Parent { 
    // Because you're extending Parent, it will allow you to use the method in your parent class. 
    public void method2() { 
     System.out.println("You can't call this method from Parent"); 
    } 
} 

現在,如果你打電話給你的方法,你可以做這樣的:

Parent parent = new Parent(); 
parent.method1(); 

Child child = new Child(); 
child.method1(); 
child.method2(); 

輸出:

"You can call this method from Child" 
"You can call this method from Child" 
"You can't call this method from Parent" 

如果您現在在父類中編輯method1,它將自動更改您的子類將提供的輸出。

+0

你的父母不是這裏的抽象類 –

+0

@Ruchi我知道,這是打算。在OP是初學者並試圖使用代碼的情況下,如果它是抽象的並且他試圖在將來實例化它,可能會使他感到困惑。它不一定是抽象的。這就是爲什麼我在括號之間加上「可能抽象」的原因。 – JREN

0

因爲你已經標記了「多重繼承」(類的問題),我認爲你發現在Java中是不可能的,並且在你的層次結構中使用抽象類沒有意義。

你可以做的是利用委託技術: 創建一個類類A並將所有常用方法放在那裏。在B和C類中,您可以創建A類的實例並使用該類的所有方法。 實施例:

A delegate = new A(); 
delegate.someMethod(); 

進一步瞭解委託模式here

相關問題