2011-04-12 81 views
1

Java問:我無法在父類的內部類foo中訪問公共變量。爲什麼? (爲了簡潔,僞編碼):無法訪問內部類的公共變量...繼承自父類

public class PageObject 
{ 
    public class Button 
    { 
     public String foo ="I want this string." //can't access.... 
    } 
    ....other stuff I can access here... 
} 

public class worker 
    { 
    public PageObject p = new PageObject(); 
    } 

public class workerchild extends worker 
{ 
    p.Buttons. <---don't have access to Buttons public variables, only .class, etc. 
} 

回答

4

p.Button是一個classname。
與其他任何類名一樣,它只能用於訪問靜態成員。

您需要獲得Button類的實例。 (例如,p.new Button().foo

+0

謝謝謝謝謝謝! – Joe 2011-04-12 16:37:38

+0

hm嘗試這個例子仍然出現錯誤。 '無法解析符號按鈕'。 String s =(new p.Button()。foo); – Joe 2011-04-12 16:49:29

+0

對不起;那應該是'p.new Button()'。 – SLaks 2011-04-12 16:52:16

2

首先,你的內部類被稱爲Button(單數),而不是Buttons(複數)。其次,將內部類靜態化並使foo成員保持不變,並且您將能夠訪問foo成員,只需Button.foo即可,您將無法更改其值。

+0

另一個不錯的選擇,謝謝 – Joe 2011-04-12 17:26:49