亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

子類和父類有相同屬性,父類的引用指向子類對象,報空指針異常是什么原因?

子類和父類有相同屬性,父類的引用指向子類對象,報空指針異常是什么原因?

shenzhi 2017-03-01 09:46:03
public?class?Tetromino?{ Cell[]?cells; public?Tetromino(){ cells?=?new?Cell[4]; } } public?class?T?extends?Tetromino{ ????????Cell[]?cells;//如果在這里寫了這一句代碼,就會報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;就不會報錯,但是寫了之后,在26行如下代碼行就會提示異常,請問是什么原因呢??在線等,謝謝。if((i==cells[k].row)&(j==cells[k].col)){
查看完整描述

3 回答

?
慕俠7578997

TA貢獻5條經驗 獲得超1個贊

你子類重寫了父類的cells屬性 所以你這個構造函數不會修改父類的cells屬性 等你print類中讀取的時候cells的初始值就是讀的父類的cells屬性,所以值是null,==的時候就會空指針異常

查看完整回答
1 反對 回復 2017-03-01
  • 3 回答
  • 0 關注
  • 1926 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號