我的代码存在此问题,我不知道如何解决它,请帮助我。
不能访问类型Hra
的封闭实例。必须使用Hra
类型的封闭实例限定分配(例如x.new A()
x
是Hra
的实例)。"
public class Hra {
public static void main(String[] args) {
Hrac h = new Cerveny(1); // there is that error
int result = h.zautoc(55, 30);
System.out.print(0);
}
public Hrac[] pole;
private int counter;
public Hra() {
this.pole = new Hrac[100];
this.counter = 0;
}
public void pridajHraca(Hrac h) {
this.pole[counter] = h;
}
public abstract class Hrac{
protected double zivot;
public int tim;
public int zautoc(int velkost, int mojaPozicia){
if (tim == 1){
if (mojaPozicia >= 7)
return (mojaPozicia -7);
else
return (velkost - 7 - mojaPozicia);
}
if (tim == 2){
if (mojaPozicia +3 <= velkost)
return (mojaPozicia +3);
else
return (mojaPozicia -velkost +3 );
}
return 0;
}
}
public class Cerveny extends Hrac{
public Cerveny(double _zivot) {
super.zivot = _zivot;
super.tim = 1;
}
}
public class Cierny extends Hrac{
public Cierny(double _zivot) {
super.zivot = _zivot;
super.tim = 2;
}
}
}
答案 0 :(得分:2)
您使用的是非静态nested classes,也称为内部类。这些类的实例需要构造其封闭类的实例,如消息所示:
必须使用Hra类型的封闭实例限定分配(例如
x.new A()
,其中x
是Hra的实例
查看代码,这些内部类可以是静态嵌套类,因为它们不访问其封闭类的任何成员。或者甚至更好,因为您似乎还不知道嵌套类是什么,并且由于我没有看到这些类嵌套的任何好理由,它们应该是顶级类,在它们自己定义{{1文件。在了解它们的用途以及它们的工作原理之前,不要使用嵌套类。