public?class?Tetromino?{
Cell[]?cells;
public?Tetromino(){
cells?=?new?Cell[4];
}
}
public?class?T?extends?Tetromino{
????????Cell[]?cells;//如果在這里寫了這一句代碼,就會(huì)報(bào)NullPointerException
public?T(){
this(0,0);
}
public?T(int?a,int?b){
this.cells=new?Cell[]{new?Cell(a,b),new?Cell(a,b+1),new?Cell(a-1,b+1),new?Cell(a,b+2)};
}
}
public?class?Test?{
public?static?void?print(Tetromino?te){
Cell[]?cells=te.cells;
boolean?mark=false;
for(int?i=0;i<=19;i++){
for(int?j=0;j<=9;j++){
for(int?k=0;k<4;k++){
if((i==cells[k].row)&(j==cells[k].col)){
System.out.print("*");
mark?=true;
break;
}
else{
mark?=false;
}
}
if(mark==false){
System.out.print("-");
}
}
System.out.println();
}
}
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
Tetromino?t?=?new?T(1,1);
print(t);
}
}上面這段代碼,如果T類中不寫Cell[]?cells;就不會(huì)報(bào)錯(cuò),但是寫了之后,在26行如下代碼行就會(huì)提示異常,請問是什么原因呢??在線等,謝謝。if((i==cells[k].row)&(j==cells[k].col)){
3 回答

慕俠7578997
TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超1個(gè)贊
你子類重寫了父類的cells屬性 所以你這個(gè)構(gòu)造函數(shù)不會(huì)修改父類的cells屬性 等你print類中讀取的時(shí)候cells的初始值就是讀的父類的cells屬性,所以值是null,==的時(shí)候就會(huì)空指針異常
添加回答
舉報(bào)
0/150
提交
取消