程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 異常-java核心技術中一個關於數組的例子不理解,請教大家

異常-java核心技術中一個關於數組的例子不理解,請教大家

編輯:編程綜合問答
java核心技術中一個關於數組的例子不理解,請教大家

Person是Employer的父類,Employer有個新方法setBonus,代碼如下

Employer[] emprs ={new Employer("張三"),new Employer("李四")};              
Person[] ps =emprs;   
ps[0] = new Person("小明");//運行時該行報錯ArrayStoreException
emprs[0].setBonus(2000);

書中給出的解釋是要保持數組中的元素對象類型一致,
我不理解的是ps定義的元素的類型是Person,為什麼在這裡不能ps[0] = new Person("小明"),ps[0]不是只是對new Person("小明")的一個引用嗎?他又不是Employer類型,我去給它賦值為Person類型有什麼不可?

另外以上代碼如果不用數組的形式,就是兩個對象這麼操作下,是沒有錯誤的。

可能我以上的理解本身有錯誤,請大家指教指正。

最佳回答:


有錯別字,重新說一次:

emprs[0]和 ps[0]這兩個引用都指向了Employer對象,現在你要把ps[0]指向的對象換成person對象,emprs[0]也會同時修改為指向該對象。而emprs[0]是Emloyer對象,這就成了“子類的引用執行父類對象”,這是不可以的。所以報錯。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved