999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

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

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

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

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

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

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

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

例如:有以下類的定義:

public class Son {

public static void main(String[] args){

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

… } }

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

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

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

class Father

{…}

public class Son extends Father

{…

public static void main(String[] args)

{ Son s=new Son();

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

… } }

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

class Father

{ …

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

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

}public class Son extends Father

{ …

public static void main(String[] args)

{ Son s=new Son();

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

… } }

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

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

… } }

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

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

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

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語(yǔ)句來(lái)調(diào)用同一個(gè)類中其他構(gòu)造方法時(shí),必須作為當(dāng)前構(gòu)造方法的第一條語(yǔ)句。只能在一個(gè)構(gòu)造方法中用this語(yǔ)句來(lái)調(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.

主站蜘蛛池模板: 午夜无码一区二区三区| 久久国产精品嫖妓| 91福利国产成人精品导航| AV在线麻免费观看网站| 成人在线观看不卡| 亚洲另类色| 成人91在线| 无码一区中文字幕| 国产三级成人| 波多野结衣亚洲一区| 国产正在播放| 欧美一级大片在线观看| 国产成人无码AV在线播放动漫| 国产经典三级在线| 看你懂的巨臀中文字幕一区二区| 日本91在线| 国产色婷婷视频在线观看| 亚洲全网成人资源在线观看| 国产欧美日韩视频怡春院| 亚洲天堂精品在线| 国产区精品高清在线观看| 欧美视频免费一区二区三区| 亚洲人成成无码网WWW| 国产流白浆视频| 国产精品第页| 亚洲人成网站色7799在线播放| 国产成人三级在线观看视频| 欧美国产日韩一区二区三区精品影视| 久久熟女AV| 国产精品99r8在线观看| av天堂最新版在线| 免费黄色国产视频| 熟妇人妻无乱码中文字幕真矢织江 | 欧美日韩专区| 亚洲午夜天堂| 亚洲有无码中文网| 97在线公开视频| 国产精品污视频| 日韩成人午夜| 激情六月丁香婷婷| 欧美成人精品一级在线观看| 波多野结衣第一页| 2021精品国产自在现线看| 亚洲国产理论片在线播放| 久久久91人妻无码精品蜜桃HD| 日韩美毛片| 国产精品太粉嫩高中在线观看| 亚洲欧美国产视频| 国产精品白浆在线播放| 亚洲日韩第九十九页| 国产黄在线免费观看| 婷婷久久综合九色综合88| 国产电话自拍伊人| 亚洲成人一区二区| 亚洲无限乱码| 午夜视频在线观看区二区| 大陆精大陆国产国语精品1024| 午夜影院a级片| 2021国产在线视频| 国产成人凹凸视频在线| 激情网址在线观看| 中文字幕日韩丝袜一区| 成人午夜亚洲影视在线观看| 狠狠ⅴ日韩v欧美v天堂| 无码专区在线观看| 99er这里只有精品| 啪啪啪亚洲无码| 欧美一级在线看| 亚洲成a∧人片在线观看无码| av一区二区三区在线观看 | 在线观看网站国产| 午夜精品福利影院| 伊人久久福利中文字幕| 日韩精品一区二区三区大桥未久| 国产精品成人啪精品视频| 欧美国产中文| jizz亚洲高清在线观看| 亚洲狠狠婷婷综合久久久久| 日韩视频免费| 国产玖玖视频| 亚洲乱亚洲乱妇24p| 91成人免费观看在线观看|