2014-02-18 61 views
0

我有一個類全局聲明數組,並且這些數組通過這個類中的方法初始化。它們不在構造函數內。我有另外一門課,我使用extends來允許我訪問這些值。當然,我收到一個空指針異常。我將如何去解決這個問題?我不需要重寫這些數組。 JUst需要在方法內部使用它們來填充其他數組。如何從子類中的父類訪問數組?

我已經在這一段時間了。我對java的使用經驗還很少。 任何建議,將不勝感激。謝謝大家

什麼我談論的例子:

public class Parent{ 
    public double hey[ ]; 

    public double [] fillHey(){ 

    hey = new double[57] 

    for(int k = 0; k<57; k++) 
    { 
     hey[k] = k+2; 
    } 
    } 
} 

的子類:

public class Child extends Parent{ 

public double you[ ]; 

public double[ ] fillYou(){ 

you = new double[57]; 

for(int k = 0; k<57; k++) 
    { 
     you[k] = (k+2) * hey[k]; 
    } 
    } 
} 
+0

你忘了用語言標記問題。 – ford

+0

啊看起來像@Damien已經涵蓋了謝謝你的提高 – handroski

回答

2

你沒有實例hey數組中任一類的構造函數,因此它仍然是在子類中使用它時爲null。

您可以

  • 初始化它在構造函數中

  • 或(它使用前)初始化它裏面的子類fillYou()方法。

+0

因此,如果我從父類中提出相同的名稱,編譯器會認識到這一點? – handroski

+1

是的,它會識別它。 – Szymon

+1

完美。這非常有幫助。謝謝 – handroski

1

如果您要訪問的哎[]從子類,則必須調用它是這樣的:

double a[] = super.hey; 

希望工程爲您服務!

+0

我明白了。不知道.super()。我需要改變這個代碼的其他內容嗎? – handroski

+1

請注意,super指的是父類,因此,如果父類包含公共X屬性,則可以使用super.X訪問該屬性。 –

+0

調用父方法和構造函數的方式相同。 Nos,有了這些信息,希望你能弄清楚怎麼做你想做的。 –