Re: [問題] constructor error(extends時)
※ 引述《adrianshum (Alien)》之銘言:
: ※ 引述《tanx (arctanx)》之銘言:
: : 新手發問
: : 這是課本後面習題
: : class A
: : {
: : int i;
: : public A(int i)
: : {
: : this.i=i;
: : }
: : }
: : public class Test extends A{
: : public static void main(String[] arg){
: : A aaa=new A(10);
: : System.out.println(aaa.i);
: : }
: : }
: : error message:
: : D:\java\debug>javac Test.java
: : Test.java:12: cannot find symbol
: : symbol : constructor A()
: : location: class A
: : public class Test extends A{
: : ^
: : 1 error
: : 請問
: : 為什麼有錯ㄚ? 先謝謝摟~
: 這問題該被收到精華區了吧? 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
所以錯誤?
而只要在Test理定義一個constructor
內容去call super(參數)
這樣就OK?
不知道想的對不對
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.201.115
※ 編輯: tanx 來自: 59.112.201.115 (04/16 22:34)
討論串 (同標題文章)