2010-04-06 51 views
3

我想我正在用我的Java數組運行到繼承概念牆。我對Java很陌生,所以請告訴我是否有事情顛倒。實質上,我想做三件事:Java,填充數組和繼承

  1. 用我的Runners類的屬性創建一個runnersArray。
  2. 使用我的GenerateObjects類的GenerateObjects方法填充我的runnersArray。
  3. 訪問我填充的runnersArray的內容在我的評估類的評估方法。

問題似乎是runnersArray對上述步驟2和3中的方法不可見,但它們的類(由於設計原因)不能繼承或擴展Runners類。

在此先感謝您的任何建議。

這裏有一些代碼片段顯示我想要做的事:

public class Runners extends Party { 

    Runners[] runnersArray = new Runners[5]; 
} 

public class GenerateObject extends /* certain parent class */ { 

    public GenerateObject (int arrayNum) { 
      runnersArray[arrayNum] = /* certain Runners attributes */; 
    } 
} 

public class Evaluating extends /*certain parent class*/ { 

    public Evaluating (int arrayNum) { 
      System.out.println(/* String cast attribute of runnersArray[arrayNum]*/; 
    } 
} 
+0

基於你發佈的框架,爲什麼GenerateObject和Evaluating需要Runners的實現細節,看起來像不重要的操作(分配成員,獲取字符串)?難道跑步者不能提供方法來代替這些直接與狀態相關的其他類嗎? – msw 2010-04-06 03:03:55

+0

我可以使用跑步者,但我有大約5或6個類似於跑步者的類。按照您的建議編寫每門課程將會非常繁瑣。 GenerateObject和Evaluating旨在成爲所有這些類的一站式商店,並執行更復雜的操作。 – Arvanem 2010-04-06 03:07:55

回答

2

你有它的方式你的代碼示例,runnersArray是package-private(因爲它沒有任何訪問說明符,默認是包私有)inst Runners類的ance變量。所以你不能從GenerateObject和Evaluating類中訪問它。

如果你想runnersArray是一個全局可見的對象,那麼它可能應該是一個公共靜態變量。

public class Runners extends Party { 
    public static Runners[] runnersArray = new Runners[5]; 
} 

然後你可以從其他類這樣的訪問:

public class GenerateObject extends /* certain parent class */ { 
    public GenerateObject (int arrayNum) { 
     Runners.runnersArray[arrayNum] = /* certain Runners attributes */; 
    } 
} 

希望這有助於。

+0

這是理想的作品。感謝您的實際解決方案。爲了提高知識水平,我將閱讀公開的靜態文章。 – Arvanem 2010-04-06 03:11:43