2012-08-04 132 views
0

比方說,我有Main類,它有一個類A的實例。主類中的Java調用方法

如何在A類中調用Main類中的方法?

謝謝!

+0

如果它是一個靜態方法,就這樣調用它。如果它不是一個靜態方法,那麼[A中的方法]需要一個'Main'的實例[在調用該方法時],否?但是,我建議在大多數情況下避免像這樣的「循環」。 – 2012-08-04 05:23:00

+0

爲什麼不使用類方法get方法獲取值到主類中,使用本地方法進行操作並將結果值發送回類A對象方法 – doNotCheckMyBlog 2012-08-04 05:24:58

+0

你最好的辦法是把'Main'中的內容放到'B'類中。然後有'A'引用'B',並讓'Main'做一些事情,比如'A a = new A();'和'a.doSomething();'。 – corsiKa 2012-08-04 05:29:52

回答

0

如果它是一個實例方法,那麼你需要一個A中的M實例來調用M中的方法A.如果它是一個靜態方法,你可以直接調用它。但是你持有循環引用,所以要小心。

0

Main.methodName()用於靜態方法。

儘管聽起來像我想要做的事情可能是不好的做法。你的主要方法或類應該只是一個入口點

0

要從calss A中調用Main類中的方法,如果兩個cals都沒有關係,則需要類A中Main類的一個實例(考慮它們在同一個包中)像inheritance.if靜態然後你可以調用Main.methodName();

1

這就是所謂的Composition ...... 當一個類有其他類的參考...

Composition優於Inheritance當我們需要一個或少數功能,但並非所有的功能一類。

如:

public class A{ 

Main m = new M(); // m is a Object Reference Variable of type Main in class A 
m.go();   // go() is a method in class Main 

} 
0

如果該方法是一個靜態方法(即宣稱與「公共靜態返回類型方法()」),則A類,你需要調用Main.methodName ()。但是,如果方法是一個實例方法(聲明爲「public ReturnType methodName()」),那麼您需要以某種方式將Main的實例傳遞給A的實例(可能通過構造函數或setter方法) 。在A類內部,你可以調用instanceOfMain.methodName()。

但是(正如一些人已經提到),這可能不是處理事情的最佳方式。主要課程應該只是程序開始的地方;它不是你應該做任何真正的程序邏輯的地方。