Java 创建新的子类实例

Java 创建新的子类实例,java,subclass,Java,Subclass,我是Java新手,作为一个创建战舰游戏的练习。显然,有两个游戏板(每个玩家一个),每个板将分配三艘船。然后,我的想法是创建一个“GameBoard”类,其中包含一个“ship”类,这样我就可以创建新的船,这些船是它们将放置在上面的板的实例。以下是我目前掌握的情况: public class GameBoard { int columnCount = 7; int rowCount = 7; int spaceCount = rowCount*columnCount;

我是Java新手,作为一个创建战舰游戏的练习。显然,有两个游戏板(每个玩家一个),每个板将分配三艘船。然后,我的想法是创建一个“GameBoard”类,其中包含一个“ship”类,这样我就可以创建新的船,这些船是它们将放置在上面的板的实例。以下是我目前掌握的情况:

public class GameBoard {
    int columnCount = 7;
    int rowCount = 7;
    int spaceCount = rowCount*columnCount;

    private class ship {
        private String name;
        private void setName(String newName) {
            name = newName;
        }
    }
}
现在我的问题是如何在游戏板中调用一艘新飞船。要创建新的董事会,我将执行以下操作:

GameBoard player1 = new Gameboard();
不过,我该怎么办呢?是这样的吗

player1.ship ship1 = new player1.ship();

我的直觉告诉我这是非常错误的,我只是不知道该怎么办。谢谢你的帮助

你的意思是如何从外部类中实例化一艘新船?在这种情况下,你可以简单地写

ship t = new ship();

你的意思是如何从外部类中实例化一艘新船?在这种情况下,你可以简单地写

ship t = new ship();

你可以简单地做到这一点

public class GameBoard {
int columnCount = 7;
int rowCount = 7;
int spaceCount = rowCount*columnCount;
ship s;

}


public class ship {
    private String name;
    private void setName(String newName) {
        name = newName;
    }
}
然后

GameBoard gb = new GameBoard();
gb.s = new ship();

你可以简单地做到这一点

public class GameBoard {
int columnCount = 7;
int rowCount = 7;
int spaceCount = rowCount*columnCount;
ship s;

}


public class ship {
    private String name;
    private void setName(String newName) {
        name = newName;
    }
}
然后

GameBoard gb = new GameBoard();
gb.s = new ship();

如果您想从外部类实例一艘船,您应该:

  • 使船舶保持静止
  • 公开船舶等级
  • 详情如下:

    public class GameBoard {
        int columnCount = 7;
        int rowCount = 7;
        int spaceCount = rowCount*columnCount;
    
        public static class ship {
            private String name;
            private void setName(String newName) {
                name = newName;
            }
        }
    }
    
    然后你可以做:

     ship1 = new GameBoard.ship();
    

    如果您想从外部类实例一艘船,您应该:

  • 使船舶保持静止
  • 公开船舶等级
  • 详情如下:

    public class GameBoard {
        int columnCount = 7;
        int rowCount = 7;
        int spaceCount = rowCount*columnCount;
    
        public static class ship {
            private String name;
            private void setName(String newName) {
                name = newName;
            }
        }
    }
    
    然后你可以做:

     ship1 = new GameBoard.ship();
    

    Ship是一个私有类,因此只能由GameBoard修改。您可以通过以下方式创建船舶:

    public class GameBoard {
    int columnCount = 7;
    int rowCount = 7;
    int spaceCount = rowCount*columnCount;
    ship _ship = new ship();
    
    private class ship {
        private String name;
        private void setName(String newName) {
            name = newName;
        }
    }
    public ship getShip(){return _ship);
    
    您必须通过
    player.getShip().setName(“USS SOMETHING”)

    或者更好

    public class GameBoard {
        int columnCount = 7;
        int rowCount = 7;
        int spaceCount = rowCount*columnCount;
        ship _ship;
    
        public GameBoard(String shipName){
           _ship = new ship();
           _ship.setName(shipName);
        }
    
        private class ship {
            private String name;
            private void setName(String newName) {
                name = newName;
            }
        }
    

    在其中,您可以在创建游戏板时设置船只名称
    GameBoard player1=new GameBoard(“USS SOMETHING”)

    Ship是一个私有类,因此只能由GameBoard修改。您可以通过以下方式创建船舶:

    public class GameBoard {
    int columnCount = 7;
    int rowCount = 7;
    int spaceCount = rowCount*columnCount;
    ship _ship = new ship();
    
    private class ship {
        private String name;
        private void setName(String newName) {
            name = newName;
        }
    }
    public ship getShip(){return _ship);
    
    您必须通过
    player.getShip().setName(“USS SOMETHING”)

    或者更好

    public class GameBoard {
        int columnCount = 7;
        int rowCount = 7;
        int spaceCount = rowCount*columnCount;
        ship _ship;
    
        public GameBoard(String shipName){
           _ship = new ship();
           _ship.setName(shipName);
        }
    
        private class ship {
            private String name;
            private void setName(String newName) {
                name = newName;
            }
        }
    

    在其中,您可以在创建游戏板时设置船只名称
    GameBoard player1=new GameBoard(“USS SOMETHING”)

    这是一个开始,但如何将其与“player1”GameBoard关联?这是一个开始,但如何将其与“player1”GameBoard关联?完美。现在我的问题是,如何才能无限量地增加潜在的船只?现在,我必须预先定义我将要添加船只的位置,但是如果我不知道我想要多少,并且希望能够随意添加船只,那该怎么办?非常感谢你的帮助!在你的gameboard类中保留一个船的数组或列表,你可以添加任意数量的船:保留列表s;在gameboard定义中添加新的ship作为gb.s=new List();gb.s.add(新船());好极了非常感谢你的帮助。如果你不介意的话,为什么在我已经在GameBoard类中定义了一个列表之后,还要声明一个新的列表呢;在这一行中,您正在声明列表,但在写入新列表()之前,此列表不会初始化;这只是列表的初始化,然后您可以向列表中添加任意数量的对象。除了.get(index)之外,还有什么更方便的方法来操作它吗?再次感谢你,顺便说一句,你帮了我的大忙!完美的现在我的问题是,如何才能无限量地增加潜在的船只?现在,我必须预先定义我将要添加船只的位置,但是如果我不知道我想要多少,并且希望能够随意添加船只,那该怎么办?非常感谢你的帮助!在你的gameboard类中保留一个船的数组或列表,你可以添加任意数量的船:保留列表s;在gameboard定义中添加新的ship作为gb.s=new List();gb.s.add(新船());好极了非常感谢你的帮助。如果你不介意的话,为什么在我已经在GameBoard类中定义了一个列表之后,还要声明一个新的列表呢;在这一行中,您正在声明列表,但在写入新列表()之前,此列表不会初始化;这只是列表的初始化,然后您可以向列表中添加任意数量的对象。除了.get(index)之外,还有什么更方便的方法来操作它吗?再次感谢你,顺便说一句,你帮了我的大忙!