2015-05-21 63 views
-4
class A 
{ 
private int i = 10,j=0; 
public void f(){} 
public void g(){} 
} 

class B extends A 
{ 
public int ib = 20; 
public void g(){} 
} 

public class C 
{ 
A a = new A();//1 
B b = new B();//2 
public static void main(String[] args) 
{System.out.println(b.ib);} 
} 

異常「主要」 java.lang.Error的:未解決的問題,編譯: 不能使靜態參考非靜態字段B無法理解的例外在線程

在TestClass.C.main (C.java:18)

主席先生,您可否對上述程序進行更改以獲取B類中聲明的「ib」!

+0

你沒有在B中聲明的「i」,它是從'A'繼承的。 –

+0

write B b = new B();在main類中,因爲main是一個靜態方法,你不能訪問靜態方法中的靜態變量,所以你應該閱讀更多關於靜態和非靜態的內容。 –

+0

10感謝解決方案的nilesh,它工作。 但你能解釋我的錯誤嗎? –

回答

0

您還沒有在任何地方實例化類C的實例。