2 回答

繁星點(diǎn)點(diǎn)滴滴
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
嚴(yán)格來講,java無法重寫/覆蓋任何類本身的方法,只能通過繼承,在子類中重寫,但此時(shí)原先那個(gè)類的方法實(shí)際上并沒有改變。
所以,無法做到你說的,重寫數(shù)組的toString方法然后下次打印數(shù)組的時(shí)候就會(huì)按照自定義的方式打印了。
比如
class Parent { public void m() { ... } } class Child entends Parent { public void m() { ... } } Parent p = new Parent(); p.m();
最終p調(diào)用的仍然是自己的m方法,而不是子類中定義的。
不過這一問題對某些其他語言來說倒是可以實(shí)現(xiàn),比如javascript,python。這些語言可以直接改變某個(gè)類,改變后可影響到所有該類的實(shí)例(無論是之前創(chuàng)建的還是之后創(chuàng)建的)。
第二個(gè)問題,數(shù)組是java的內(nèi)置類型,其并不是由java語言實(shí)現(xiàn)的。要想找實(shí)現(xiàn)代碼就得去虛擬機(jī)的源碼中找了。
添加回答
舉報(bào)
0/150
提交
取消