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.

主站蜘蛛池模板: 欧美日韩中文字幕二区三区| 一级黄色网站在线免费看| 欧美亚洲国产一区| 亚洲最大综合网| 欧美日韩中文国产va另类| 一区二区三区成人| 亚洲性网站| 一级毛片无毒不卡直接观看| 成人福利一区二区视频在线| 亚洲国产精品日韩欧美一区| 亚洲美女高潮久久久久久久| 国产欧美视频一区二区三区| 在线永久免费观看的毛片| 在线观看免费人成视频色快速| 国产综合另类小说色区色噜噜 | 国产精品永久免费嫩草研究院| 激情爆乳一区二区| 午夜啪啪网| 婷婷五月在线| 在线高清亚洲精品二区| 直接黄91麻豆网站| 91精品啪在线观看国产91九色| 国产综合色在线视频播放线视| 亚洲欧美精品日韩欧美| 国产在线97| 日本不卡在线视频| 久久激情影院| 亚洲国产高清精品线久久| 国国产a国产片免费麻豆| 国产爽歪歪免费视频在线观看| 成人一区在线| 最新无码专区超级碰碰碰| 1769国产精品视频免费观看| 色欲综合久久中文字幕网| 国产美女无遮挡免费视频网站| 天天躁夜夜躁狠狠躁图片| 久久久成年黄色视频| 超碰91免费人妻| 国产福利在线免费观看| 国产黄在线免费观看| 中文字幕在线日本| 97在线视频免费观看| 日本久久免费| 亚洲美女视频一区| 久久96热在精品国产高清| 国产精品开放后亚洲| 精品国产自| 亚洲天堂视频在线播放| 国产成人做受免费视频 | 日韩精品欧美国产在线| 亚洲人视频在线观看| 日韩A级毛片一区二区三区| 色男人的天堂久久综合| 久久青草免费91线频观看不卡| 国产资源站| 国产精品yjizz视频网一二区| 激情無極限的亚洲一区免费| 色综合网址| 国内精品久久人妻无码大片高| 国产真实乱子伦视频播放| 成年女人a毛片免费视频| 怡春院欧美一区二区三区免费| 国产一级裸网站| 无码国内精品人妻少妇蜜桃视频 | 国产精品男人的天堂| 久久久久亚洲精品无码网站| 亚洲乱码在线播放| 精品国产免费人成在线观看| 亚洲视频欧美不卡| 精品国产一区二区三区在线观看| 久久久久国产精品嫩草影院| 日韩中文精品亚洲第三区| 麻豆a级片| 99精品一区二区免费视频| 国产免费好大好硬视频| 国产9191精品免费观看| 成人国产小视频| 伊人久久久大香线蕉综合直播| 亚洲欧美人成人让影院| 天堂va亚洲va欧美va国产| 亚洲区第一页| 欧美区国产区|