我是Java的新手,已经编写了一段时间的C ++和OOP,这对我来说是一次激动人心的新冒险。
我试图搜索这个问题,但我无法将答案转移到我的个人问题中,所以这里有:
Loop.java
public class Loop {
public int x;
public int y;
public int size;
public static void main(String [] args){
new Loop(4, 4 ,2 );
}
private boolean game;
//---------------------------------------- constructor
public Loop(){
}
public Loop(int height, int width, int cell_size){
x = width;
y = height;
size = cell_size;
System.out.println("Loop()");
game = true;
new Build_Cells(y,x);
//run();
}
};
Build_Cells.java
import java.util.*;
public class Build_Cells extends Loop {
private List<List<Cell>> map = new ArrayList<List<Cell>>();
public int col;
public int rows;
public void printMap(){
System.out.println("PrintMap()");
for( int i = 0; i < map.size() /** col */; i++){
for( int u = 0; u < map.get(i).size() /** rows */ ;u++){
System.out.print(map.get(i).get(u).getState());
}
System.out.println();
}
}
public Cell getCell(int a, int b){
return map.get(a).get(b);
}
//---------------------------------------- constructor
public Build_Cells(){
}
public Build_Cells( int by, int bx){
System.out.println("Build_Cells()");
col = by;
rows = bx;
for( int i = 0; i < col ; i++){
List<Cell> colObj = new ArrayList<Cell>(rows);
map.add(y, colObj);
for(int u = 0; u < rows; u++){
colObj.add( new Cell() );
}
}
printMap();
}
};
Cell.java
public class Cell extends Build_Cells {
private int state;
private int nemesis;
private int next;
private int getNem(int cs){
int cata;
if(cs == 1)
cata = 0;
else if(cs == (0 | 2 | 3) )
cata = 1;
else
cata = 6;
return cata;
}
//---------------------------------------- constructor
public Cell(){
System.out.println("Cell()");
set_state(5);
}
public void set_state(int input){
state = input;
nemesis = getNem(state);
}
public int getState(){
return state;
}
};
如何使Build_Cells
的{{1}}功能和getCell()
的{{1}}和Cell
功能可供getState()
使用?
答案 0 :(得分:0)
您已创建Build_Cell
的实例,但未存储对它的引用。如果你改变:
new Build_Cells(y,x);
到
Build_Cells buildCells = new Build_Cells(y,x);
您可以从buildCells.getCell()
致电Loop
。您可以通过调用buildCells.getCell().getState()
来获取单元格的状态,也可以通过调用buildCells.getCell().setState()
来设置其状态。
此外,Cell
可能不应该扩展Build_Cells
,因为它不使用它的任何功能。您可以在Java here中阅读有关OOP的更多信息。