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正片| 青青草一区| 污网站在线观看视频| 狠狠色丁香婷婷综合| 青草免费在线观看| 国产高清国内精品福利| www欧美在线观看| 午夜国产精品视频黄 | 国产精品一区不卡| 午夜不卡视频| 四虎永久免费在线| 911亚洲精品| 免费人成黄页在线观看国产| 91丝袜在线观看| A级毛片高清免费视频就| 无码福利日韩神码福利片| 国产精品亚洲综合久久小说| 中文字幕av一区二区三区欲色| 国产精品白浆在线播放| 国产精品免费电影| 国产一区二区三区精品久久呦| 制服丝袜一区| 精品欧美视频| 亚洲成A人V欧美综合天堂| 国产成人精品一区二区免费看京| 亚洲精品少妇熟女| 中文字幕在线一区二区在线| 麻豆精品在线播放| 久久精品亚洲热综合一区二区| 精品国产黑色丝袜高跟鞋| 国产偷国产偷在线高清| 精品国产一区91在线| 成年女人a毛片免费视频| 亚洲女人在线| 亚洲国产精品不卡在线| 中文字幕人妻av一区二区| 操国产美女| 色综合天天操| 男女猛烈无遮挡午夜视频| 毛片免费在线视频| 亚洲天堂精品视频| 国产视频一区二区在线观看| 国产精品白浆在线播放| 精品视频免费在线| 国产激爽大片高清在线观看| 国产精品福利社| 国产一区二区三区视频| 国产精品免费久久久久影院无码| 夜夜爽免费视频| 成人福利在线免费观看| 欧美一区精品| 日韩高清无码免费| 欧美午夜视频在线| 无码精品国产dvd在线观看9久| 久久国产高清视频| 色哟哟色院91精品网站 | 免费精品一区二区h| 成AV人片一区二区三区久久| 久996视频精品免费观看| 国产精品99一区不卡| 免费一级无码在线网站| 国产精品99久久久久久董美香| 久草视频精品| 国产精品美女自慰喷水| 亚亚洲乱码一二三四区| 岛国精品一区免费视频在线观看| 在线综合亚洲欧美网站| 国产精品区网红主播在线观看| 手机在线免费毛片| 欧美一级在线播放| 国产在线视频福利资源站| 中文字幕人成人乱码亚洲电影| 色AV色 综合网站| 国产农村妇女精品一二区| 亚洲欧美一区二区三区图片| 精品无码一区二区三区电影| 国产成人精品第一区二区| 熟女视频91|