2011-04-12 79 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