亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談Java程序中的構(gòu)造方法調(diào)用

        2011-12-31 00:00:00陳位妮
        軟件工程 2011年8期

        摘要:Java語言中的構(gòu)造方法是創(chuàng)建對象和初始化對象的特殊方法,因此,正確調(diào)用構(gòu)造方法是我們設(shè)計(jì)程序的關(guān)鍵所在,我們必須正確理解其調(diào)用原則和方式。

        關(guān)鍵詞:構(gòu)造方法;調(diào)用

        Java語言是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。Java程序在運(yùn)行時(shí),就是類中的若干個(gè)對象彼此交互、彼此發(fā)送消息的過程,所以在Java程序中需要給類創(chuàng)建所需的對象。而Java語言中的構(gòu)造方法就是專門用于創(chuàng)建對象和對所創(chuàng)建的對象進(jìn)行初始化的方法,所以,正確調(diào)用構(gòu)造方法是我們設(shè)計(jì)程序的關(guān)鍵所在。同時(shí),它也是一種特殊的成員方法,在定義時(shí)要求方法名必須與定義的類名完全相同;不允許給構(gòu)造方法指定返回類型,沒有void,也不能給構(gòu)造方法指定返回值;構(gòu)造方法不能被子類繼承;構(gòu)造方法在使用new語句進(jìn)行對象實(shí)例化時(shí)自動調(diào)用。

        以下筆者就對構(gòu)造方法的調(diào)用方式進(jìn)行分析。Java語言中構(gòu)造方法的調(diào)用有三種方式。

        一、在程序中通過new語句調(diào)用

        當(dāng)我們定義的類沒有繼承其它類時(shí),直接通過new語句來調(diào)用當(dāng)前類的構(gòu)造方法來創(chuàng)建對象。

        1.無繼承類的構(gòu)造方法的調(diào)用

        例如:有以下類的定義:

        public class Son {

        public static void main(String[] args){

        Son s=new Son();//調(diào)用默認(rèn)的無參構(gòu)造方法創(chuàng)建對象s

        … } }

        Son類沒有父類,也沒有顯示定義構(gòu)造方法,所以調(diào)用默認(rèn)的無參構(gòu)造方法來創(chuàng)建對象s。如果在類Son中顯示定義了一個(gè)或多個(gè)帶參數(shù)的構(gòu)造方法,創(chuàng)建對象時(shí)Java編譯器會根據(jù)創(chuàng)建的對象語句中的參數(shù)的個(gè)數(shù)、類型、順序來選擇相應(yīng)的構(gòu)造方法,完成不同對象的初始化工作。

        2.隱式調(diào)用父類的無參構(gòu)造方法

        當(dāng)一個(gè)子類繼承父類時(shí),子類的構(gòu)造過程中必須調(diào)用父類的構(gòu)造方法。特別是當(dāng)子類沒有定義構(gòu)造方法時(shí), 系統(tǒng)自動調(diào)用父類的無參構(gòu)造方法。例如,有以下定義:

        class Father

        {…}

        public class Son extends Father

        {…

        public static void main(String[] args)

        { Son s=new Son();

        //調(diào)用父類的無參構(gòu)造方法Father( )創(chuàng)建對象s

        … } }

        在上例中,由于沒有定義Son類(子類)的構(gòu)造方法,語句Son s=new Son()自動調(diào)用Father類(父類)的無參數(shù)的Father()構(gòu)造方法,完成對象的創(chuàng)建。所以此時(shí)必須要保證父類中有無參構(gòu)造方法,如果當(dāng)父類中的顯示定義了帶參數(shù)的構(gòu)造方法時(shí),就必須要顯示定義無參數(shù)的構(gòu)造方法,以確保父類中無參構(gòu)造方法存在,否則就會出現(xiàn)編譯錯(cuò)誤。即進(jìn)行如下操作:

        class Father

        { …

        public Father(String t){…}//帶參數(shù)的構(gòu)造方法

        public Father( ){…} //無參數(shù)的構(gòu)造方法,此時(shí)必須顯示定義。

        }public class Son extends Father

        { …

        public static void main(String[] args)

        { Son s=new Son();

        //調(diào)用父類的無參構(gòu)造方法Father( )創(chuàng)建對象s

        … } }

        二、通過super調(diào)用父類的構(gòu)造方法

        在上述實(shí)例中,一般是子類和父類都沒有定義構(gòu)造方法,或者是子類沒有定義構(gòu)造方法。父類既顯式定義了帶參數(shù)的構(gòu)造方法,又顯式定義了無參數(shù)的構(gòu)造方法,那么子類一般隱式調(diào)用父類無參構(gòu)造方法。但在實(shí)際應(yīng)用中,大多數(shù)類都是顯式地定義了構(gòu)造方法。當(dāng)父類和子類都定義了構(gòu)造方法時(shí),如果父類的構(gòu)造方法初始化父類定義的成員,子類的構(gòu)造方法初始化子類定義的成員,在創(chuàng)建子類的對象時(shí),這兩個(gè)構(gòu)造方法都要執(zhí)行。這種情況下,必須在子類的構(gòu)造方法中使用關(guān)鍵字super來調(diào)用父類的構(gòu)造方法。

        例如:

        class Father

        { …

        public Father(String t){…}//帶參數(shù)的構(gòu)造方法}

        public class Son extends Father

        { …

        public Son(int a)

        { super(“ab”);//調(diào)用父類Father的構(gòu)造方法

        … }

        public static void main(String[] args)

        {

        Son s=new Son();//調(diào)用子類的構(gòu)造方法創(chuàng)建對象s

        … } }

        如果子類通過super語句來調(diào)用父類的構(gòu)造方法時(shí),它必須作為子類構(gòu)造方法的第一條語句,而且super所帶的實(shí)際參數(shù)列表中的參數(shù)個(gè)數(shù)、類型、排列順序與父類構(gòu)造方法定義中的形式參數(shù)必須一致。

        三、用this語句調(diào)用當(dāng)前類的其他構(gòu)造方法

        當(dāng)子類調(diào)用父類的構(gòu)造方法時(shí)可以用super語句來完成,但是如果在同一個(gè)類中的構(gòu)造方法需要相互調(diào)用時(shí)我們?nèi)绾蝸斫鉀Q?this語句可以完成此功能。例如:

        public class Father

        { …

        public Father(String t)

        { …}

        public Father( )

        { this(“ab”); //調(diào)用當(dāng)前Father類中帶參數(shù)的構(gòu)造方法

        … }

        public static void main(String[] args)

        { Father f=new Father ();

        … } }

        當(dāng)用this語句來調(diào)用同一個(gè)類中其他構(gòu)造方法時(shí),必須作為當(dāng)前構(gòu)造方法的第一條語句。只能在一個(gè)構(gòu)造方法中用this語句來調(diào)用類的其他構(gòu)造方法,而且this所帶的實(shí)際參數(shù)列表中的參數(shù)個(gè)數(shù)、類型、排列順序與所調(diào)用的構(gòu)造方法的形式參數(shù)必須一致。

        構(gòu)造方法的調(diào)用是Java程序設(shè)計(jì)中最重要、最基本的操作,因此我們一定要正確理解其調(diào)用方式和原則。

        參考文獻(xiàn)

        [1] 劉志成,張杰. Java進(jìn)階教程 [M] .北京:機(jī)械工業(yè)出版社,2009.

        [2] 錢銀中. Java程序設(shè)計(jì)案例教程[M] .北京:機(jī)械工業(yè)出版社,2008.

        成年午夜无码av片在线观看| 在线观看午夜视频国产| 国产激情久久99久久| 精品高清国产乱子伦| 亚洲国产成人va在线观看天堂| 日韩av无码中文字幕| 亚洲av永久无码国产精品久久| 粉嫩极品国产在线观看| 一区=区三区国产视频| 亚洲国产成人久久综合碰碰| 中文区中文字幕免费看 | 青青草手机在线免费观看视频| 国产成人亚洲综合无码品善网| 窝窝影院午夜看片| 欧洲乱码伦视频免费| 一道之本加勒比热东京| 国产三级av在线播放| 无限看片在线版免费视频大全| 熟女系列丰满熟妇av| 国产av一区二区内射| 包皮上有一点一点白色的| 欧美交换配乱吟粗大25p| 无码精品色午夜| 91青青草手机在线视频| 日本在线一区二区三区视频观看| 成年女人a毛片免费视频| 久久99热久久99精品| 草草影院国产| 女同另类激情在线三区| 女同性恋看女女av吗| 亚洲国产精品综合久久网络| 激情 人妻 制服 丝袜| 日韩AV无码中文无码AV| 日韩人妻久久中文字幕| 在线天堂www中文| 无码少妇一区二区三区| 亚洲中字幕永久在线观看| 国产喷白浆精品一区二区豆腐 | 人人妻人人玩人人澡人人爽| 日本国产在线一区二区| 日韩av一区二区三区激情在线|