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

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

java子類中調用父類重寫的方法。

java子類中調用父類重寫的方法。

哆啦的時光機 2018-12-04 13:08:44
問題如下:public class Test {     public  String  toString(){  return super.toString();        }    public static void main(String args[]){     System.out.println(new Test());   } }運行結果:Test@de6cedpublic class Test {      public static void main(String args[]){     System.out.println(new Test());   } } 運行結果:Test@de6ced我產生的疑問是 第一個類打印的是其父類Object的地址嗎?如果是那么為什么第二個打印的地址和其父類一樣。我是這樣想的 子類創建對象的時候需要調用父類的構造方法子類創建的同時父類也創建了,而且子類和父類分配同一個內存空間。不知道這樣想對不對?
查看完整描述

2 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

你可以看一下源碼,在eclipse上,對準toString(),ctrl+鼠標左鍵,即可進入源碼,看看toString的實現,

源碼如下

return getClass().getName() + "@" + Integer.toHexString(hashCode());

 

“我產生的疑問是 第一個類打印的是其父類Object的地址嗎?”

錯。看來你對java還是不熟悉。Object類是所有類的父類。而你給出的兩個類,其中一個重寫了toString()方法,但是相當于沒重寫。因為Object類是所有類的父類,所以也是Test的父類。

如果你的類Test沒重寫toString的方法,則調用你父類(即Object)的toString方法。

如果你的類Test重寫了toString方法,則調用重寫的那個方法。

但是為什么說你重寫了之后相當于沒重寫呢?因為你重寫的方法還是調用了父類的toString方法!所以效果是一樣的。


查看完整回答
反對 回復 2018-12-08
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

類只是創建對象的模板,不管怎么繼承創建的對象只有一個。

toString返回的@后面是對象的hashcode,內容(值)相同的對象hashcode相同。


查看完整回答
反對 回復 2018-12-08
  • 2 回答
  • 0 關注
  • 882 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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