Re: [問題] constructor error(extends時)
※ 引述《tanx (arctanx)》之銘言:
: ※ 引述《adrianshum (Alien)》之銘言:
: : 這問題該被收到精華區了吧? o_oa
: : child class 的 constructor 如果在起
: : 初沒有用 super(....) 去 invoke parent class
: : 的某 constructor, 就會被自動加入 invoke super()
: : (無參數 constructor)
: : 由於你的 parent class 沒有提供無參數 constructor
: : 所以出問題了.
: : 解決方法我想已經有很大提示了, 自己試試吧
: : Alien
: 請問
: 是不是我想的這樣
: class Test
: 沒有定constructor
: 所以compile時會插入一個default constructor (無參數)
: 由於Test 繼承 class A
: 而這Test的 default constructor雖然沒內容
: 但是compile會自動呼叫 A的default constructor
: 而class A裡面由於沒有定義無參數的constructor
: 所以錯誤?
: 不知道想的對不對
大致正確,因為 class Test 沒有定義任何 constructor
所以 compiler 會自動在 class Test 中加一段:
Test() { super(); }
另外, A 已經定義了 constructor: A(int x)
所以 compiler 不會自動加 constructor: A() 進去
回過頭來看 Test 類別中的 Test() { super(); }
觀察這個 super(); 的行為....
因為 A() 未定義,所以 super() 會發生錯誤。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.205.85
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):