2013-11-05 88 views
0

我正在创建一个国际象棋游戏,并且我试图用“虚拟”片段填充我的游戏板,我创建了一个从超类片断延伸的子类。这个子类被称为Dummy。反正我试图通过抽象类和多态性

Piece[][] pieces=new Dummy(); 

在虚拟类来创建它的一个实例构造函数什么都不做一样的Graphics2D的paint方法。但是,编译时出现错误。它说:“不兼容的类型pieces = new Dummy(); required:Piece [] [] found:Dummy”

但是由于这是Piece isn的子类,

回答

3

请勿将Dummy直接指定给阵列。首先创建数组,然后将Dummy分配给数组的其中一个元素。

Piece[][] pieces = new Piece[8][8]; 
pieces[0][0] = new Dummy(); // or whichever element you want 
+0

这不就是创建父类的实例?它是抽象的,所以这不是允许的 – user2809437

+0

1)你没有说'Piece'是'abstract'。 2)没关系;你总是可以创建任何引用类型的_array_,或者不是。 – rgettman

+0

哎呀!但是,无论如何,谢谢你的信息 – user2809437

1

您试图在二维中分配一些值而不指定其大小,这是非法的。
您必须首先创建数组,然后才能分别赋值。
你可以这样做:

Piece[][] pieces = new Piece[8][]; 
pieces[0] = new dummy[8]; 
pieces[1] = new dummy[8]; 

希望的回答可以帮助你:)