作者H45 (!H45)
看板java
标题Re: [问题] constructor error(extends时)
时间Mon Apr 16 22:39:19 2007
※ 引述《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