Java - 在不同的类

时间:2016-12-07 01:10:20

标签: java constructor subclass

我试图将一个对象(在“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”子类的代码正确运行)。

在这种情况下,我是否需要以某种方式引用超类?

如果有更简单的方法,我不能这样做(这种方式在分配中指定)。

1 个答案:

答案 0 :(得分:0)

了解static nested class and an instance nested class

之间的区别

其他一些SO question

短期:使用静态声明内部EmptySea类,然后读取/理解原因 - 简而言之,没有static无法在Ship实例的上下文之外创建EmptySea实例