斷點除錯來分析一道筆試題:
先說正確的輸出的結果:
相信小夥伴會有疑惑:為啥先有個a?
打上斷點,且跟隨本憨憨斷點除錯看看究竟...
第一步:進入debug模式
第二步:下一步竟然進入到了class a 的方法a中(這就是疑處所在!!!)
執行後的控制台:
接下來繼續看
第三步:執行到b的無參構造
執行後的控制台:
第四步:這一行**走完了,回到該行
第五步:開始執行下一行,走你:
第六步:直接走a的空參構造
執行後的控制台:
程式結束!
開始分析:
1.建構函式不能繼承,只能呼叫(正確理解概念);
2.如果父類沒有無參建構函式,建立子類時,必須在建構函式第一行中呼叫父類有參建構函式。(否則編譯器會報錯)
alt + enter 可以看看編譯器給出的報錯解決方案:
而父類沒有無參建構函式super(),所以編譯就無法通過了。如果父類有無參建構函式,只要在子類建構函式第一行呼叫super()即父類無參建構函式,就可以了。
如下:如果父類沒有空參構造
再次強調一下:
那麼,上面的那個題目就好理解了,父類只有無參建構函式,子類沒有主動呼叫父類的無參構造,jdk缺省會呼叫父類的無參構造,即new b();就會先走父類的無參構造public a()方法,再回來走子類b自己的無參構造public b()方法;如此這一行**執行後便有了a、b兩行列印.
一道筆試題的思考(三)
題目 隨機產生5個數,這5個數每個數的範圍都在 10,35 之間,5個數的和是定值100,盡量讓5個數的概率隨機,寫出演算法?如,原來a,b,c,d,e都是20,隨機後變成a 34b 29c 11d 10e 16,但是他們之和還是100,再次隨機後a 11b 21c 13d 28e 27,他們的和還...
一道面試題引發的思考
首先我們給出這道面試題的 以及題目 lista new arraylist list.add 1 list.add 2 for string item list 問 上段 執行會報錯嗎?如果把 1 換成 2 會報錯嗎?為什麼?首先給出答案 上面這段 執行不會報錯。把 1 換成 2 再執行就會報錯。為...
一道面試題引發的思考
好的面試官能夠能好的和面試者互動,而一場好的面試也能帶給面試者更多的思考 面試官給我出題後的 1 分鐘內,我給出了第一種思路 排序。將數字按公升序排序,去除最小的那個數即可。存在問題 時間複雜度高,只考慮了正數的情況。面試官給出了第一次提示時間複雜度過高,要求降低時間複雜度。於是在經過幾分鐘思考後,...