为什么当我尝试使用 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".
这是我的 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".