我對java如何處理所有類都是困惑。java可變範圍問題
我做一個類foo.java
並在foo.java
的main
方法我做的foo
一個實例(一類創建本身是沒有意義的我,但它在java中似乎正常的嗎?)
然後我做的一個實例另一個類bar
,所以我現在在foo
類中有foo
和bar
的實例,但是如何訪問帶有bar中的函數的foo
的成員變量?
foo
是處理代碼,bar
是UI,需要查看foo
中的所有數據,以便它可以顯示它。
我對java如何處理所有類都是困惑。java可變範圍問題
我做一個類foo.java
並在foo.java
的main
方法我做的foo
一個實例(一類創建本身是沒有意義的我,但它在java中似乎正常的嗎?)
然後我做的一個實例另一個類bar
,所以我現在在foo
類中有foo
和bar
的實例,但是如何訪問帶有bar中的函數的foo
的成員變量?
foo
是處理代碼,bar
是UI,需要查看foo
中的所有數據,以便它可以顯示它。
有很多的可能性。一種方法是構造foo
與bar
實例:
public class Foo {
public void someFooMethod() {
}
public static void main(String[] args) {
Foo foo = new Foo();
Bar bar = new Bar(foo);
bar.someBarMethod();
}
}
public class Bar {
private Foo fooLocalRefence;
public Bar(Foo foo) {
this.fooLocalReference = foo;
}
public someBarMethod() {
this.fooLocalReference.someFooMethod();
}
}
是的,組合總是一個更好的選擇 –
我建議你看一下在Oracle站點上的Java教程 - >http://download.oracle.com/javase/tutorial/java/index.html
按照以下,這會給你一個更好地瞭解如何用Java編寫的應用程序 - 寫代碼,你不明白,會造成你的問題在以後的發展過程中.....
首先,Foo
的main
方法可能static
,所以沒有的Foo
創建Foo
一個實例。
其次,Foo
應該通過getter方法公開其數據,並且Bar
應該通過在所提供的Foo
實例上調用getter方法來訪問數據。
吧,它是如何調用getter方法的?你剛纔提出的問題沒有解決它 – Skeith
@Skeith我說:「Foo應該通過getter方法暴露它的數據,並且Bar應該訪問所提供的Foo實例上的數據」。假定getter方法是公開的,所以Bar將能夠調用它們。這正是Pablo發佈的內容(除非他的Foo方法返回void)。 –
你錯了「創建自己的類對我來說沒有意義,但在java中似乎很正常」,因爲你的術語是錯誤的。你實際上在做的是創建類Foo
的實例。而main()
僅僅是應用程序的入口點,因爲JVM只需要知道從哪裏開始。
如果您希望兩個不同類的實例共享信息,則需要提供其中一個參考。像這樣的:
Foo foo = new Foo();
Bar bar = new Bar(foo);
小樣本PF代碼將是非常有價值的。你可以發佈你的兩個類,以便我們可以看到你寫的到目前爲止? – Mechkov
在你的酒吧對象中擁有一個foo對象 –