我想我的Java数组正在碰到继承概念墙。我是Java的新手,所以请告诉我我是否有倒挂的东西。本质上,我想做三件事:

  • 使用Runners类的属性创建一个RunnersArray。
  • 使用我的GenerateObjects类的GenerateObjects方法填充我的RunnersArray。
  • 在我的Evaluating类的Evaluating方法中访问填充的RunnersArray的内容。

  • 问题似乎是上述步骤2和3中的方法看不到RunnersArray,但是它们的类(由于设计原因)不能继承或扩展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]*/;
         }
    }
    

    最佳答案

    在代码示例中使用它的方式,RunnersArray是Runners类的package-private(因为它没有任何访问说明符,默认为package-private)实例变量。因此,您不能只从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 */;
        }
    }
    

    希望这可以帮助。

    09-25 16:48