看板java
标 题Re: [问题] 建构子和this super的问题
发信站KKCITY (Fri Jul 20 17:15:00 2007)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.chu!Leo.mi.chu!zoonews.ee.nt
※ 引述《[email protected] (艾德华)》之铭言:
> 新手发问,请指教@@
> 想请问一下在继承时的建构子里面,如果子类别的建构子中有
> 出现this或是super是不是执行的顺序会先是super(或this)
===>一个建构子的第一行,一定是this或是super(如果user没设,预设是super();
),所以一定会先执行this 或是super
> 然後才是父类别的建构子?
====>会不会呼叫到父类别的建构子,要看你是写了this还是super
> 也就是说顺序是->子类别建构子->先执行父类别建构子(当有this时先执行)
> ->然後才是子类别建构子内容
===>当你写了this时,是指呼叫这个子类别的另一个建构元(看是否有传参数)
,super()才是呼叫父类别的建构子
> 例如
> class A{
> A(){
> ....
> }
> } //不管是否带参数的建构子
> class B extends A{
> B(){
> this('a'); //先执行这行,才执行建构子A()?
> }
> }
> public class Extends1{
> public static void man(String[] args){
> B b=new B();
> }
> }
> 不知道看不看的懂我的问题.感谢ORZ
===>以上的程式,是会编译错误的,当你呼叫了B(),执行到 this('a'),是指呼叫
B类别里的另一个建构子,而它的参数是字元,如果你在B类别里加上
B(char x){super();},编译才会成功
--
┌─────◆KKCITY◆─────┐ KKBOX◤歌名╱歌手╱歌词╱专辑◢搜寻
│ bbs.kkcity.com.tw │ ★ http://www.kkbox.com.tw ★
└──《From:220.138.37.189
》──┘ 超过100家唱片公司合法授权 音乐尽情下载
--