我试图将一个对象(在“Ship”类的“EmptySea”子类中创建)实例化为另一个“Ocean”类,以使用“EmptySea”对象填充数组。
错误是“无法将EmptySea解析为某种类型。”
这是我的Ocean类代码:
public class Ocean {
// Instance variables.
public Ship[][] ships = new Ship[10][10];
public int shotsFired;
public int hitCount;
// Constructor.
public Ocean() {
shotsFired = 0;
hitCount = 0;
for (int row = 0; row < ships.length; row++) {
for (int column = 0; column < ships[row].length; column++) {
ships[row][column] = new EmptySea();
public abstract class Ship {
// Instance variables.
private int bowRow;
private int bowColumn;
private int length;
private boolean horizontal;
private boolean[] hit = new boolean[4];
// No constructor needed for Ship class.
// Methods (too many to show).
public class EmptySea extends Ship {
// Constructor.
EmptySea() {
length = 1;
}
// Inherited methods to define.
int getLength() {
return length = 1;
}
String getShipType() {
return "Empty";
}
@Override
boolean shootAt(int row, int column) {
return false;
}
@Override
boolean isSunk() {
return false;
}
@Override
public String toString() {
return "-";
}
}
ship数组已在Ocean类中正确声明为实例变量。基本上,它不是让我放置EmptySea()对象(“Ship”类及其“EmptySea”子类的代码正确运行)。
在这种情况下,我是否需要以某种方式引用超类?
如果有更简单的方法,我不能这样做(这种方式在分配中指定)。
答案 0 :(得分:0)
了解static nested class
and an instance nested class
。
其他一些SO question。
短期:使用静态声明内部EmptySea
类,然后读取/理解原因 - 简而言之,没有static
无法在Ship
实例的上下文之外创建EmptySea实例