为什么当我尝试使用 getter 访问我为超类创建的作为实例变量的列表时,总是出现错误?

why do I keep getting errors when I try to use getters to access a List I created as an instance variable for my superclass?

这是我的 Powers 超类代码:

import java.util.*;

public abstract class Powers implements Sequence
{
   private ArrayList<Double> powers;

   public Powers()
   {
      powers = new ArrayList<Double>(); 
   }

   public abstract List<Double> firstTenTerms();
   public abstract List<Double> firstNTerms(int n); 

   public void setPowers(ArrayList<Double> newlist)
   {
      powers = newlist;
   }

   public List<Double> getPowers()
   {
      return powers;
   }
}

下面是我的 PowersofTwo 子类代码(好吧,是其中的一部分,因为代码很长): 导入 java.util.*;

public class PowersOfTwo extends Powers
{   
   public PowersOfTwo()
   {
      super();
   }

   public List<Double> firstTenTerms()
   {
      if(Powers.getPowers().size()!=0)
      {
         while(Powers.getPowers().size()>0)
         {
            Powers.getPowers().remove(powers.size()-1);
         }
      }

      for(int k=0; k<10; k++)
      {
         Powers.getPowers().add(Math.pow(2.0,(double) k));
      }
      return Powers.getPowers();
   }
}

当我尝试编译子类时,我不断收到这种错误信息:

PowersOfTwo.java:15: 错误:无法从静态上下文中引用非静态方法 getPowers()

或者,如果我只是尝试 "powers" 而不是 "Powers.getPowers()",我仍然得到这个:

PowersOfTwo.java:19: 错误:powers 在 Powers

中具有私有访问权限

我在 类 中遇到的问题通常是使用 getter 解决的,现在我真的很困惑该怎么做才能修复这个错误。任何帮助将不胜感激!

在抽象 class Powers 中,您有一个名为 getPowers() 的 non-static 方法。要访问它,您必须使用扩展 Powers 的 class 实例。也许您想使 getPowers() 成为静态方法?

或者您可以将 "powers" 变量声明为受保护的而不是私有的,然后使用 "powers".