Java面向?qū)ο蟪绦蛟O(shè)計(jì)第4章_類(lèi)與對(duì)象_第1頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)第4章_類(lèi)與對(duì)象_第2頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)第4章_類(lèi)與對(duì)象_第3頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)第4章_類(lèi)與對(duì)象_第4頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)第4章_類(lèi)與對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2010-1-10 1 Java面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 第第4章章 類(lèi)與對(duì)象 2010-1-10 2 主要內(nèi)容主要內(nèi)容 類(lèi)類(lèi) 對(duì)象對(duì)象 參數(shù)傳值參數(shù)傳值 對(duì)象組合對(duì)象組合 static關(guān)鍵字 關(guān)鍵字 this關(guān)鍵字 關(guān)鍵字 包包 import語(yǔ)句 語(yǔ)句 jar文件 文件 難點(diǎn)難點(diǎn) 參數(shù)傳值與對(duì)象組合參數(shù)傳值與對(duì)象組合 包和包和import語(yǔ)句語(yǔ)句 導(dǎo)讀導(dǎo)讀 2010-1-10 3 4.1 編程語(yǔ)言的幾個(gè)發(fā)展階段編程語(yǔ)言的幾個(gè)發(fā)展階段 面向機(jī)器語(yǔ)言面向機(jī)器語(yǔ)言 面向過(guò)程語(yǔ)言面向過(guò)程語(yǔ)言 面向?qū)ο笳Z(yǔ)言面向?qū)ο笳Z(yǔ)言 面向?qū)ο缶幊讨饕w現(xiàn)下列三個(gè)特性 封裝性 繼承 多態(tài) 2010-1-10

2、4 4.2 類(lèi)類(lèi) 類(lèi)類(lèi)是組成是組成JavaJava程序的基本要素。類(lèi)封裝了程序的基本要素。類(lèi)封裝了 一類(lèi)對(duì)象的狀態(tài)和方法。類(lèi)是用來(lái)定義對(duì)象的一類(lèi)對(duì)象的狀態(tài)和方法。類(lèi)是用來(lái)定義對(duì)象的 模板。模板。 類(lèi)的實(shí)現(xiàn)包括兩部分:類(lèi)聲明和類(lèi)體?;?lèi)的實(shí)現(xiàn)包括兩部分:類(lèi)聲明和類(lèi)體?;?本格式為:本格式為: class class 類(lèi)名類(lèi)名 類(lèi)體的內(nèi)容類(lèi)體的內(nèi)容 2010-1-10 5 4.2.1 類(lèi)聲明類(lèi)聲明 類(lèi)聲明類(lèi)聲明 :class 類(lèi)名類(lèi)名 如:class People”和“class 動(dòng)物”稱(chēng)作類(lèi)聲明;“People”和 “動(dòng)物”分別是類(lèi)名。 給類(lèi)命名時(shí),遵守下列編程風(fēng)格(這不是語(yǔ)法要求給類(lèi)命名時(shí),遵

3、守下列編程風(fēng)格(這不是語(yǔ)法要求 的,但應(yīng)當(dāng)遵守):的,但應(yīng)當(dāng)遵守): 1如果類(lèi)名使用拉丁字母,那么名字的首字母使用大寫(xiě)字母, 如。 2類(lèi)名最好容易識(shí)別、見(jiàn)名知意。當(dāng)類(lèi)名由幾個(gè)“單詞”復(fù) 合而成時(shí),每個(gè)單詞的首字母使用大寫(xiě)。 2010-1-10 6 4.2.2 類(lèi)體類(lèi)體 類(lèi)聲明之后的一對(duì)大括號(hào)類(lèi)聲明之后的一對(duì)大括號(hào)“”,“”以及它以及它 們之間的內(nèi)容稱(chēng)作類(lèi)體,大括號(hào)之間的內(nèi)容稱(chēng)作們之間的內(nèi)容稱(chēng)作類(lèi)體,大括號(hào)之間的內(nèi)容稱(chēng)作 類(lèi)體的內(nèi)容。類(lèi)體的內(nèi)容。 類(lèi)體的內(nèi)容由兩部分構(gòu):一部分是變量的聲明,類(lèi)體的內(nèi)容由兩部分構(gòu):一部分是變量的聲明, 用來(lái)刻畫(huà)屬性;另一部分是方法的定義,用來(lái)刻用來(lái)刻畫(huà)屬性;另一部分

4、是方法的定義,用來(lái)刻 畫(huà)功能。畫(huà)功能。 2010-1-10 7 4.2.3 成員變量和局部變量成員變量和局部變量 類(lèi)體中類(lèi)體中變量聲明部分所聲明的變量被稱(chēng)作類(lèi)的成員變量。在方法體中聲明 的變量和方法的參數(shù)被稱(chēng)作局部變量。 1變量的類(lèi)型:變量的類(lèi)型:成員變量和局部變量的類(lèi)型可以是Java中的任何一種數(shù)據(jù) 類(lèi)型,包括基本類(lèi)型:整型、浮點(diǎn)型、字符型;引用類(lèi)型:數(shù)組、對(duì)象和接口 (對(duì)象和接口見(jiàn)后續(xù)內(nèi)容)。 2變量的有效范圍:變量的有效范圍:成員變量在整個(gè)類(lèi)內(nèi)都有效,局部變量只在聲明它 的方法內(nèi)有效。方法參數(shù)在整個(gè)方法內(nèi)有效,方法內(nèi)的局部變量從聲明它的位 置之后開(kāi)始有效。 3實(shí)例變量與類(lèi)變量:實(shí)例變量與

5、類(lèi)變量:在聲明成員變量時(shí),用關(guān)鍵字static給予修飾的 稱(chēng)作類(lèi)變量,否則稱(chēng)作實(shí)例變量(類(lèi)變量也稱(chēng)為static變量,靜態(tài)變量)。 4成員變量的隱藏:成員變量的隱藏:如果局部變量的名字與成員變量的名字相同,則成 員變量被隱藏,即這個(gè)成員變量在這個(gè)方法內(nèi)暫時(shí)失效。 5編程風(fēng)格編程風(fēng)格 (1)一行只聲明一個(gè)變量。 (2)變量的名字符合標(biāo)識(shí)符規(guī)定。 (3)變量名字見(jiàn)名知意,避免容易混淆的變量名字。 2010-1-10 8 4.2.4 方法方法 方法的定義包括兩部分:方法聲明和方法體。一般格方法的定義包括兩部分:方法聲明和方法體。一般格 式為:式為: 方法聲明部分方法聲明部分 方法體的內(nèi)容方法體的內(nèi)容

6、 1方法聲明 方法聲明包括方法名和方法的返回類(lèi)型,如: float area() 注:注:方法的返回類(lèi)型方法的返回類(lèi)型、方法的參數(shù)、方法的名字方法的參數(shù)、方法的名字 2方法體 方法聲明之后的一對(duì)大括號(hào)“” ,“”以及之間的內(nèi)容 稱(chēng)作方法的方法體。方法體的內(nèi)容包括局部變量的聲明和Java 語(yǔ)句。 2010-1-10 9 4.2.5 方法重載方法重載 方法重載的意思是:一個(gè)類(lèi)中可以有多個(gè)方法重載的意思是:一個(gè)類(lèi)中可以有多個(gè) 方法具有相同的名字,但這些方法的參數(shù)必須方法具有相同的名字,但這些方法的參數(shù)必須 不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù) 的類(lèi)型不同。

7、的類(lèi)型不同。 2010-1-10 10 4.2.6 構(gòu)造方法構(gòu)造方法 構(gòu)造方法是一種特殊方法,構(gòu)造方法是一種特殊方法,它的名字必須它的名字必須 與它所在的類(lèi)的名字完全相同,而且沒(méi)有類(lèi)型,與它所在的類(lèi)的名字完全相同,而且沒(méi)有類(lèi)型, 構(gòu)造方法也可以重載。構(gòu)造方法也可以重載。 2010-1-10 11 4.2.7 類(lèi)方法和實(shí)例方法類(lèi)方法和實(shí)例方法 方法聲明時(shí),方法類(lèi)型前面不加關(guān)鍵字方法聲明時(shí),方法類(lèi)型前面不加關(guān)鍵字 staticstatic修飾的是實(shí)例方法、加修飾的是實(shí)例方法、加staticstatic修飾的是修飾的是 類(lèi)方法(靜態(tài)方法)。類(lèi)方法(靜態(tài)方法)。 2010-1-10 12 4.2.8

8、幾幾個(gè)值得注意的問(wèn)題個(gè)值得注意的問(wèn)題 1 1對(duì)成員變量的操作只能放在方法中,方對(duì)成員變量的操作只能放在方法中,方 法可以對(duì)成員變量和該方法體中聲明的局部變法可以對(duì)成員變量和該方法體中聲明的局部變 量進(jìn)行操作。量進(jìn)行操作。 2 2需要注意的是:實(shí)例方法既能對(duì)類(lèi)變量操需要注意的是:實(shí)例方法既能對(duì)類(lèi)變量操 作也能對(duì)實(shí)例變量操作,而類(lèi)方法只能對(duì)類(lèi)變作也能對(duì)實(shí)例變量操作,而類(lèi)方法只能對(duì)類(lèi)變 量進(jìn)行操作。量進(jìn)行操作。 3 3一個(gè)類(lèi)中的方法可以互相調(diào)用,實(shí)例方法一個(gè)類(lèi)中的方法可以互相調(diào)用,實(shí)例方法 可以調(diào)用該類(lèi)中的其它方法;類(lèi)中的類(lèi)方法只可以調(diào)用該類(lèi)中的其它方法;類(lèi)中的類(lèi)方法只 能調(diào)用該類(lèi)的類(lèi)方法,不能調(diào)用

9、實(shí)例方法。能調(diào)用該類(lèi)的類(lèi)方法,不能調(diào)用實(shí)例方法。 2010-1-10 13 4.3 對(duì)象對(duì)象 4.3.1 創(chuàng)建對(duì)象創(chuàng)建對(duì)象 1 1對(duì)象的聲明對(duì)象的聲明 People zhangPing; 2.2.為聲明的對(duì)象分配內(nèi)存為聲明的對(duì)象分配內(nèi)存 zhangPing=new People();zhangPing=new People(); 例例4-1,4-1,例例4-24-2 3 3對(duì)象的內(nèi)存模型對(duì)象的內(nèi)存模型 (1 1)聲明對(duì)象時(shí)的內(nèi)存模型聲明對(duì)象時(shí)的內(nèi)存模型 (2 2)對(duì)象分配內(nèi)存后的內(nèi)存模型對(duì)象分配內(nèi)存后的內(nèi)存模型 4 4創(chuàng)建多個(gè)不同的對(duì)象創(chuàng)建多個(gè)不同的對(duì)象 2010-1-10 14 4.3.2

10、使用對(duì)象使用對(duì)象 1 1通過(guò)使用運(yùn)算符通過(guò)使用運(yùn)算符“.” “.” 對(duì)象操作自己的變量對(duì)象操作自己的變量 (對(duì)象的屬性)(對(duì)象的屬性) 2 2使用運(yùn)算符使用運(yùn)算符“.”,“.”,對(duì)象調(diào)用類(lèi)中的方法(對(duì)對(duì)象調(diào)用類(lèi)中的方法(對(duì) 象的功能)象的功能) 例例4-34-3 2010-1-10 15 4.3.3 對(duì)象的引用和實(shí)體對(duì)象的引用和實(shí)體 當(dāng)用類(lèi)創(chuàng)建一個(gè)對(duì)象時(shí),類(lèi)中當(dāng)用類(lèi)創(chuàng)建一個(gè)對(duì)象時(shí),類(lèi)中 的成員變量在分配內(nèi)存空間,這的成員變量在分配內(nèi)存空間,這 些內(nèi)存空間些內(nèi)存空間稱(chēng)作稱(chēng)作該對(duì)象的實(shí)體或該對(duì)象的實(shí)體或 對(duì)象的變量,而對(duì)象中存放著引對(duì)象的變量,而對(duì)象中存放著引 用。用。 一個(gè)類(lèi)創(chuàng)建的兩個(gè)對(duì)象,如果

11、一個(gè)類(lèi)創(chuàng)建的兩個(gè)對(duì)象,如果 具有相同的引用,那么就具有完具有相同的引用,那么就具有完 全相同的實(shí)體。全相同的實(shí)體。 2010-1-10 16 4.4 參數(shù)傳值參數(shù)傳值 4.4.1 基本數(shù)據(jù)類(lèi)型參數(shù)的傳值基本數(shù)據(jù)類(lèi)型參數(shù)的傳值 對(duì)于基本數(shù)據(jù)類(lèi)型的參數(shù),向該參數(shù)傳遞對(duì)于基本數(shù)據(jù)類(lèi)型的參數(shù),向該參數(shù)傳遞 的值的級(jí)別不可以高于該參數(shù)的級(jí)別的值的級(jí)別不可以高于該參數(shù)的級(jí)別 。 例例4-44-4 2010-1-10 17 4.4.2 引用類(lèi)型參數(shù)的傳值引用類(lèi)型參數(shù)的傳值 當(dāng)參數(shù)是引用類(lèi)型時(shí),當(dāng)參數(shù)是引用類(lèi)型時(shí),“傳值傳值”傳遞的是變傳遞的是變 量中存放的量中存放的“引用引用”,而不是變量所引用的實(shí)體。,而

12、不是變量所引用的實(shí)體。 例例4-54-5 2010-1-10 18 4.4.3 可變參數(shù)可變參數(shù) 可變參數(shù)是指在聲明方法時(shí)不給出參數(shù)列表可變參數(shù)是指在聲明方法時(shí)不給出參數(shù)列表 中從某項(xiàng)直至最后一項(xiàng)參數(shù)的名字和個(gè)數(shù),但這中從某項(xiàng)直至最后一項(xiàng)參數(shù)的名字和個(gè)數(shù),但這 些參數(shù)的類(lèi)型必須相同。可變參數(shù)使用些參數(shù)的類(lèi)型必須相同。可變參數(shù)使用“”“”表表 示若干個(gè)參數(shù),這些參數(shù)的類(lèi)型必須相同,最后示若干個(gè)參數(shù),這些參數(shù)的類(lèi)型必須相同,最后 一個(gè)參數(shù)必須是參數(shù)列表中的最后一個(gè)參數(shù)。一個(gè)參數(shù)必須是參數(shù)列表中的最后一個(gè)參數(shù)。 例如:例如: public void f(int . x)public void f(i

13、nt . x) 例例4-64-6 2010-1-10 19 4.4.4 有理數(shù)的類(lèi)封裝有理數(shù)的類(lèi)封裝 面向?qū)ο缶幊毯诵乃枷胫痪褪菍?shù)據(jù)和對(duì)面向?qū)ο缶幊毯诵乃枷胫痪褪菍?shù)據(jù)和對(duì) 數(shù)據(jù)的操作封裝在一起。數(shù)據(jù)的操作封裝在一起。 1 1RationalRational(有理數(shù))類(lèi)有理數(shù))類(lèi) 2 2用用RationalRational對(duì)象做運(yùn)算對(duì)象做運(yùn)算 Rational.javaRational.java MainClass.java MainClass.java 2010-1-10 20 4.5 對(duì)象的組合對(duì)象的組合 一個(gè)類(lèi)可以把對(duì)象作為自己的成員變量,一個(gè)類(lèi)可以把對(duì)象作為自己的成員變量, 如果

14、用這樣的類(lèi)創(chuàng)建對(duì)象,那么該對(duì)象中就會(huì)如果用這樣的類(lèi)創(chuàng)建對(duì)象,那么該對(duì)象中就會(huì) 有其它對(duì)象,也就是說(shuō)該對(duì)象將其他對(duì)象作為有其它對(duì)象,也就是說(shuō)該對(duì)象將其他對(duì)象作為 自己的組成部分,或者說(shuō)該對(duì)象是由幾個(gè)對(duì)象自己的組成部分,或者說(shuō)該對(duì)象是由幾個(gè)對(duì)象 組合而成。組合而成。 例例4-74-7 2010-1-10 21 4.6 staticstatic關(guān)鍵字關(guān)鍵字 用static 修飾的變量 類(lèi)變量類(lèi)變量 沒(méi)有用static 修飾的變量 實(shí)例變量實(shí)例變量 方法聲明中用static 修飾的方法類(lèi)方法類(lèi)方法 方法聲明中不用static 修飾的方法實(shí)例方法實(shí)例方法 2010-1-10 22 4.6.1 實(shí)例變量和

15、類(lèi)變量的區(qū)別實(shí)例變量和類(lèi)變量的區(qū)別 如果類(lèi)中有類(lèi)變量,那么所有對(duì)象的這個(gè)如果類(lèi)中有類(lèi)變量,那么所有對(duì)象的這個(gè) 類(lèi)變量都分配給相同的一處內(nèi)存,改變其中一類(lèi)變量都分配給相同的一處內(nèi)存,改變其中一 個(gè)對(duì)象的這個(gè)類(lèi)變量會(huì)影響其它對(duì)象的這個(gè)類(lèi)個(gè)對(duì)象的這個(gè)類(lèi)變量會(huì)影響其它對(duì)象的這個(gè)類(lèi) 變量。也就是說(shuō)對(duì)象共享類(lèi)變量。變量。也就是說(shuō)對(duì)象共享類(lèi)變量。 例例4-84-8 2010-1-10 23 4.6.2 實(shí)例方法和類(lèi)方法的區(qū)別實(shí)例方法和類(lèi)方法的區(qū)別 當(dāng)用類(lèi)創(chuàng)建對(duì)象后,類(lèi)中的實(shí)例方法才分配當(dāng)用類(lèi)創(chuàng)建對(duì)象后,類(lèi)中的實(shí)例方法才分配 入口地址,從而實(shí)例方法可以被類(lèi)創(chuàng)建的任何對(duì)入口地址,從而實(shí)例方法可以被類(lèi)創(chuàng)建的任何對(duì)

16、 象調(diào)用執(zhí)行。象調(diào)用執(zhí)行。 對(duì)于類(lèi)中的類(lèi)方法,在該類(lèi)被加載到內(nèi)存時(shí),對(duì)于類(lèi)中的類(lèi)方法,在該類(lèi)被加載到內(nèi)存時(shí), 就分配了相應(yīng)的入口地址。就分配了相應(yīng)的入口地址。 例例4-94-9 2010-1-10 24 4.7 this this 關(guān)鍵字關(guān)鍵字 this是Java的一個(gè)關(guān)鍵字,表示某個(gè)對(duì)象。 this可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可 以出現(xiàn)在類(lèi)方法中。 2010-1-10 25 4.7.1 在構(gòu)造方法中使用在構(gòu)造方法中使用this thisthis關(guān)鍵字出現(xiàn)在類(lèi)的構(gòu)造方法中時(shí),代關(guān)鍵字出現(xiàn)在類(lèi)的構(gòu)造方法中時(shí),代 表使用該構(gòu)造方法所創(chuàng)建的對(duì)象。表使用該構(gòu)造方法所創(chuàng)建的對(duì)象。 例例4-104

17、-10 2010-1-10 26 4.7.2 在實(shí)例方法中使用在實(shí)例方法中使用this 當(dāng)當(dāng)thisthis關(guān)鍵字出現(xiàn)實(shí)例方法中時(shí),代表正關(guān)鍵字出現(xiàn)實(shí)例方法中時(shí),代表正 在調(diào)用該方法的當(dāng)前對(duì)象。在調(diào)用該方法的當(dāng)前對(duì)象。 當(dāng)實(shí)例成員變量在實(shí)例方法中出現(xiàn)時(shí),默認(rèn)當(dāng)實(shí)例成員變量在實(shí)例方法中出現(xiàn)時(shí),默認(rèn) 的格式是:的格式是:this.this.成員變量。成員變量。 當(dāng)當(dāng)staticstatic成員變量在實(shí)例方法中出現(xiàn)時(shí),成員變量在實(shí)例方法中出現(xiàn)時(shí), 默認(rèn)的格式是:默認(rèn)的格式是:類(lèi)名類(lèi)名. .成員變量。成員變量。 2010-1-10 27 4.8 包包 包是包是Java語(yǔ)言中有效地管理類(lèi)的一個(gè)機(jī)制。語(yǔ)言

18、中有效地管理類(lèi)的一個(gè)機(jī)制。 包名的目的是有效的區(qū)分名字相同的類(lèi)。包名的目的是有效的區(qū)分名字相同的類(lèi)。 2010-1-10 28 4.8.1 包語(yǔ)句包語(yǔ)句 通過(guò)關(guān)鍵字通過(guò)關(guān)鍵字packagepackage聲明包語(yǔ)句。聲明包語(yǔ)句。 packagepackage語(yǔ)句作為語(yǔ)句作為JavaJava源文件的第一條語(yǔ)句,源文件的第一條語(yǔ)句, 為該源文件中聲明的類(lèi)指定包名。為該源文件中聲明的類(lèi)指定包名。 package package語(yǔ)句的一般格式為:語(yǔ)句的一般格式為: package package 包名包名; ; 2010-1-10 29 4.8.2 有包名的類(lèi)的存儲(chǔ)目錄有包名的類(lèi)的存儲(chǔ)目錄 程序如果使用

19、了包語(yǔ)句,例如:程序如果使用了包語(yǔ)句,例如: package tom.jiafeipackage tom.jiafei; 那么存儲(chǔ)文件的目錄結(jié)構(gòu)中必須包含有如下的結(jié)那么存儲(chǔ)文件的目錄結(jié)構(gòu)中必須包含有如下的結(jié) 構(gòu)構(gòu) tomjiafeitomjiafei 如:如: c:1000tomjiafei c:1000tomjiafei 并且要將源文件編譯得到的類(lèi)的字節(jié)碼文件保并且要將源文件編譯得到的類(lèi)的字節(jié)碼文件保 存在目錄存在目錄c:1000tomjiafei中(源文件可以任意中(源文件可以任意 存放)。存放)。 2010-1-10 30 4.8.3 運(yùn)行有包名的主類(lèi)運(yùn)行有包名的主類(lèi) 如果主類(lèi)的包名是如

20、果主類(lèi)的包名是tom.jiafei,那么主類(lèi)的字節(jié)那么主類(lèi)的字節(jié) 碼一定存放在碼一定存放在tomjiefei目錄中,運(yùn)行時(shí)必須到目錄中,運(yùn)行時(shí)必須到 tomjiefei的上一層(即的上一層(即tom的父目錄)目錄中去的父目錄)目錄中去 運(yùn)行主類(lèi)。運(yùn)行主類(lèi)。 假設(shè)假設(shè)tomjiefei的上一層目錄是的上一層目錄是1000,那么,必,那么,必 須如下格式來(lái)運(yùn)行:須如下格式來(lái)運(yùn)行: C:1000java tom.jiafei. C:1000java tom.jiafei.主類(lèi)名主類(lèi)名 注:主類(lèi)名是:注:主類(lèi)名是:“包名包名. .主類(lèi)名主類(lèi)名” ” 例例4-114-11 2010-1-10 31 4.

21、9 import import 語(yǔ)句語(yǔ)句 一個(gè)類(lèi)可能需要另一個(gè)類(lèi)聲明的對(duì)象作為自一個(gè)類(lèi)可能需要另一個(gè)類(lèi)聲明的對(duì)象作為自 己的成員或方法中的局部變量,如果這兩個(gè)類(lèi)己的成員或方法中的局部變量,如果這兩個(gè)類(lèi) 在同一個(gè)包中,當(dāng)然沒(méi)有問(wèn)題。在同一個(gè)包中,當(dāng)然沒(méi)有問(wèn)題。 如果一個(gè)類(lèi)想要使用的那個(gè)類(lèi)和它不在一個(gè)如果一個(gè)類(lèi)想要使用的那個(gè)類(lèi)和它不在一個(gè) 包中,要使用包中,要使用importimport語(yǔ)句完成使命。語(yǔ)句完成使命。 2010-1-10 32 4.9.1 引入類(lèi)庫(kù)中的類(lèi)引入類(lèi)庫(kù)中的類(lèi) 如果用戶(hù)需要類(lèi)庫(kù)中的類(lèi)就必須使用如果用戶(hù)需要類(lèi)庫(kù)中的類(lèi)就必須使用import語(yǔ)語(yǔ) 句,如:句,如: import j

22、ava.until.Date; import java.until.Date; 例例4-124-12 2010-1-10 33 4.9.2 引入自定義包中的類(lèi)引入自定義包中的類(lèi) 用戶(hù)程序可以使用用戶(hù)程序可以使用tom.jiafei包包中的類(lèi),中的類(lèi),即使即使 用用非類(lèi)庫(kù)非類(lèi)庫(kù)中有包名的類(lèi),也要使用中有包名的類(lèi),也要使用import語(yǔ)句,語(yǔ)句, 如:如: import tom.jiafei.import tom.jiafei.* *; ; 例例4-134-13, 例例4-144-14 2010-1-10 34 4.9.3 使用無(wú)包名的類(lèi)使用無(wú)包名的類(lèi) 如果一個(gè)類(lèi)想使用無(wú)名包中的類(lèi),只要將這如果一

23、個(gè)類(lèi)想使用無(wú)名包中的類(lèi),只要將這 個(gè)無(wú)包名的類(lèi)的字節(jié)碼和當(dāng)前類(lèi)保存在同一目個(gè)無(wú)包名的類(lèi)的字節(jié)碼和當(dāng)前類(lèi)保存在同一目 錄中即可。錄中即可。 例例4-154-15 2010-1-10 35 4.9.4 避免類(lèi)名混淆避免類(lèi)名混淆 1 1區(qū)分無(wú)包名和有包名的類(lèi)區(qū)分無(wú)包名和有包名的類(lèi) 如果想同時(shí)使用如果想同時(shí)使用tom.jiafeitom.jiafei包中的包中的A A類(lèi)和無(wú)類(lèi)和無(wú) 名包中的名包中的A A類(lèi),就不能省略包名,例如:類(lèi),就不能省略包名,例如: A a1=new A();A a1=new A(); tom.jiafei.A a2=new tom.jiafei.A(); tom.jiafei.

24、A a2=new tom.jiafei.A(); 2區(qū)分有包名的類(lèi)區(qū)分有包名的類(lèi) 如果一個(gè)源文件引入了兩個(gè)包中同名的類(lèi),如果一個(gè)源文件引入了兩個(gè)包中同名的類(lèi), 那么在使用該類(lèi)時(shí),不允許省略包名,比如:那么在使用該類(lèi)時(shí),不允許省略包名,比如: tom.jiafei.A bird=new tom.jiafei.A(); tom.jiafei.A bird=new tom.jiafei.A(); .A goat=new .A(); .A goat=new .A(); 2010-1-10 36 4.10 訪問(wèn)權(quán)限訪問(wèn)權(quán)限 訪問(wèn)限制修飾符有訪問(wèn)限制修飾符有privateprivate、protected

25、protected和和 publicpublic,都是都是JavaJava的關(guān)鍵字,用來(lái)修飾成員變的關(guān)鍵字,用來(lái)修飾成員變 量或方法。量或方法。 2010-1-10 37 4.10.1 私有變量和私有方法私有變量和私有方法 用關(guān)鍵字用關(guān)鍵字private修飾的成員變量和方法稱(chēng)為私修飾的成員變量和方法稱(chēng)為私 有變量和私有方法。有變量和私有方法。 對(duì)于私有成員變量或方法,只有在本類(lèi)中創(chuàng)建對(duì)于私有成員變量或方法,只有在本類(lèi)中創(chuàng)建 該類(lèi)的對(duì)象時(shí),這個(gè)對(duì)象才能訪問(wèn)自己的私有該類(lèi)的對(duì)象時(shí),這個(gè)對(duì)象才能訪問(wèn)自己的私有 成員變量和類(lèi)中的私有方法。成員變量和類(lèi)中的私有方法。 例例4-16,4-16,例例4-17

26、4-17 2010-1-10 38 4.10.2 共有變量和共有方法共有變量和共有方法 用用public修飾的成員變量和方法被稱(chēng)為共有變修飾的成員變量和方法被稱(chēng)為共有變 量和共有方法量和共有方法 。 我們?cè)谌魏我粋€(gè)類(lèi)中用類(lèi)我們?cè)谌魏我粋€(gè)類(lèi)中用類(lèi)Tom Tom 創(chuàng)建了一個(gè)對(duì)創(chuàng)建了一個(gè)對(duì) 象后,該對(duì)象能訪問(wèn)自己的象后,該對(duì)象能訪問(wèn)自己的publicpublic變量和類(lèi)中變量和類(lèi)中 的的publicpublic方法(也可以通過(guò)類(lèi)名來(lái)操作成員變方法(也可以通過(guò)類(lèi)名來(lái)操作成員變 量、方法)量、方法) 。 2010-1-10 39 4.10.3 友好變量和友好方法友好變量和友好方法 當(dāng)在另外一個(gè)類(lèi)中用類(lèi)當(dāng)

27、在另外一個(gè)類(lèi)中用類(lèi)Tom 創(chuàng)建了一個(gè)對(duì)象創(chuàng)建了一個(gè)對(duì)象 后,如果這個(gè)類(lèi)與后,如果這個(gè)類(lèi)與Tom類(lèi)在同一個(gè)包中,那么該類(lèi)在同一個(gè)包中,那么該 對(duì)象能訪問(wèn)自己的友好變量和友好方法。對(duì)象能訪問(wèn)自己的友好變量和友好方法。 在任何一個(gè)與在任何一個(gè)與Tom同一包中的類(lèi)中,也可以通同一包中的類(lèi)中,也可以通 過(guò)過(guò)Tom類(lèi)的類(lèi)名訪問(wèn)類(lèi)的類(lèi)名訪問(wèn)Tom類(lèi)的類(lèi)友好成員變量和類(lèi)的類(lèi)友好成員變量和 類(lèi)友好方法。類(lèi)友好方法。 2010-1-10 40 4.10.4 受保護(hù)的成員變量和方法受保護(hù)的成員變量和方法 用用protectedprotected修飾的成員變量和方法被稱(chēng)為受修飾的成員變量和方法被稱(chēng)為受 保護(hù)的成員變量

28、和受保護(hù)的方法保護(hù)的成員變量和受保護(hù)的方法 。 2010-1-10 41 4.10.5 publicpublic類(lèi)與友好類(lèi)類(lèi)與友好類(lèi) 類(lèi)聲明時(shí),如果在關(guān)鍵字類(lèi)聲明時(shí),如果在關(guān)鍵字classclass前面加上前面加上 publicpublic關(guān)鍵字,就稱(chēng)這樣的類(lèi)是一個(gè)關(guān)鍵字,就稱(chēng)這樣的類(lèi)是一個(gè)public public 類(lèi)類(lèi) 。 可以在可以在任何另外一個(gè)類(lèi)任何另外一個(gè)類(lèi)中,使用中,使用publicpublic類(lèi)創(chuàng)類(lèi)創(chuàng) 建對(duì)象。建對(duì)象。 如果一個(gè)類(lèi)不加如果一個(gè)類(lèi)不加publicpublic修飾,這樣的類(lèi)被稱(chēng)修飾,這樣的類(lèi)被稱(chēng) 作友好類(lèi)。作友好類(lèi)。 在另外一個(gè)類(lèi)中使用友好類(lèi)創(chuàng)建對(duì)象時(shí),要保在另外一個(gè)

29、類(lèi)中使用友好類(lèi)創(chuàng)建對(duì)象時(shí),要保 證它們是在證它們是在同一包中同一包中。 2010-1-10 42 4.11 基本類(lèi)型的類(lèi)包裝基本類(lèi)型的類(lèi)包裝 JavaJava的基本數(shù)據(jù)類(lèi)型包括:的基本數(shù)據(jù)類(lèi)型包括:bytebyte、intint、 shortshort、longlong、floatfloat、doubledouble、charchar。 Java Java提供了基本數(shù)據(jù)類(lèi)型相關(guān)的類(lèi),實(shí)現(xiàn)了提供了基本數(shù)據(jù)類(lèi)型相關(guān)的類(lèi),實(shí)現(xiàn)了 對(duì)基本數(shù)據(jù)類(lèi)型的封裝。對(duì)基本數(shù)據(jù)類(lèi)型的封裝。 這些類(lèi)分別是:這些類(lèi)分別是:ByteByte、IntegerInteger、ShortShort、 LongLong、Floa

30、tFloat、DoubleDouble和和CharacterCharacter類(lèi)。這些類(lèi)類(lèi)。這些類(lèi) 在在java.langjava.lang包中。包中。 2010-1-10 43 4.11.1 DoubleDouble和和FloatFloat類(lèi)類(lèi) Double類(lèi)和類(lèi)和Float類(lèi)實(shí)現(xiàn)了對(duì)類(lèi)實(shí)現(xiàn)了對(duì)double和和float 基本型數(shù)據(jù)的類(lèi)包裝?;拘蛿?shù)據(jù)的類(lèi)包裝。 Double類(lèi)的構(gòu)造方法:類(lèi)的構(gòu)造方法:Double(double num) Float類(lèi)的構(gòu)造方法:類(lèi)的構(gòu)造方法: Float(float num) Double對(duì)象調(diào)用對(duì)象調(diào)用doubleValue()方法方法可以返回可以返回

31、該對(duì)象含有的該對(duì)象含有的double型數(shù)據(jù)型數(shù)據(jù)。 Float對(duì)象調(diào)用對(duì)象調(diào)用floatValue()方法方法可以返回該對(duì)可以返回該對(duì) 象含有的象含有的float型數(shù)據(jù)型數(shù)據(jù)。 2010-1-10 44 4.11.2 ByteByte、Short Short 、IntegerInteger、LongLong類(lèi)類(lèi) 上述個(gè)類(lèi)的構(gòu)造方法分別上述個(gè)類(lèi)的構(gòu)造方法分別 : Byte(byte num) Short(short num) Integer(int num) Long(long num) Byte、Short、Integer和和Long對(duì)象分別調(diào)用對(duì)象分別調(diào)用 byteValue ()、shor

32、tValue()、intValue()和和longValue () 方法方法返回該對(duì)象含有的返回該對(duì)象含有的基本型數(shù)據(jù)基本型數(shù)據(jù)。 2010-1-10 45 4.11.3 CharacterCharacter類(lèi)類(lèi) CharacterCharacter類(lèi)實(shí)現(xiàn)了對(duì)類(lèi)實(shí)現(xiàn)了對(duì)charchar基本型數(shù)據(jù)的類(lèi)包裝?;拘蛿?shù)據(jù)的類(lèi)包裝。 Character Character類(lèi)的構(gòu)造方法:類(lèi)的構(gòu)造方法:Character(char c) Character類(lèi)中的一些常用類(lèi)方法:類(lèi)中的一些常用類(lèi)方法: public static boolean isDigit(char ch) 如果如果ch是數(shù)字字符方法返

33、回是數(shù)字字符方法返回 true,否則返回否則返回 false。 public static boolean isLetter(char ch) 如果如果ch是字母方法返回是字母方法返回 true,否則返回否則返回 false。 public static boolean isLetterOrDigit(char ch) 如果如果ch是數(shù)字字符或字母方法是數(shù)字字符或字母方法 返回返回 true,否則返回否則返回false。 public static boolean isLowerCase(char ch) 如果如果ch是小寫(xiě)字母方法返回是小寫(xiě)字母方法返回 true, 否則返回否則返回false

34、。 public static boolean isUpperCase(char ch) 如果如果ch是大寫(xiě)字母方法返回是大寫(xiě)字母方法返回 true, 否則返回否則返回false。 public static char toLowerCase(char ch) 返回返回ch的小寫(xiě)形式。的小寫(xiě)形式。 public static char toUpperCase(char ch) 返回返回ch的大寫(xiě)形式。的大寫(xiě)形式。 public static boolean isSpaceChar(char ch) 如果如果ch是空格返回是空格返回true。例例4-184-18 2010-1-10 46 4.1

35、1.4 自動(dòng)裝箱與拆箱自動(dòng)裝箱與拆箱 所謂自動(dòng)裝箱所謂自動(dòng)裝箱就是允許把一個(gè)基本數(shù)據(jù)類(lèi)型的值直就是允許把一個(gè)基本數(shù)據(jù)類(lèi)型的值直 接賦值給基本數(shù)據(jù)類(lèi)型相對(duì)應(yīng)的類(lèi)的實(shí)例,例如:接賦值給基本數(shù)據(jù)類(lèi)型相對(duì)應(yīng)的類(lèi)的實(shí)例,例如: Integer number=100;Integer number=100; 自動(dòng)拆箱自動(dòng)拆箱就是允許把基本數(shù)據(jù)類(lèi)型相對(duì)應(yīng)的類(lèi)的實(shí)就是允許把基本數(shù)據(jù)類(lèi)型相對(duì)應(yīng)的類(lèi)的實(shí) 例直接賦值給相應(yīng)的基本數(shù)據(jù)類(lèi)型變量或把基本數(shù)據(jù)例直接賦值給相應(yīng)的基本數(shù)據(jù)類(lèi)型變量或把基本數(shù)據(jù) 類(lèi)型相對(duì)應(yīng)的類(lèi)的實(shí)例當(dāng)作相應(yīng)的基本數(shù)據(jù)類(lèi)型來(lái)使類(lèi)型相對(duì)應(yīng)的類(lèi)的實(shí)例當(dāng)作相應(yīng)的基本數(shù)據(jù)類(lèi)型來(lái)使 用,例如:用,例如:num

36、bernumber是一個(gè)是一個(gè)IntegerInteger對(duì)象,那么允許:對(duì)象,那么允許: int x=number+number; int x=number+number; 例例4-194-19 2010-1-10 47 4.12 反編譯和文檔生成器反編譯和文檔生成器 4.12.1 javapjavap反編譯反編譯 JDK提供的反編譯器提供的反編譯器javap.exe可以將字節(jié)可以將字節(jié) 碼反編譯為源碼,查看源碼類(lèi)中的碼反編譯為源碼,查看源碼類(lèi)中的public方法方法 名字和名字和public成員變量的名字,例如:成員變量的名字,例如: javap java.util.Date 2010-1

37、-10 48 4.12.2 javadocjavadoc制作文檔制作文檔 使用使用JDK提供的提供的javadoc.exe可以制做源文件的可以制做源文件的 html格式文檔。格式文檔。 假設(shè)假設(shè)D:test有源文件有源文件Example.java,用用 javadoc Example.java 生成生成Example.java的的html格式文擋。格式文擋。 例例4-204-20 2010-1-10 49 4.13 jarjar文件文件 我們可以使用我們可以使用jar.exe命令把一些類(lèi)的字節(jié)碼文件壓縮成一個(gè)命令把一些類(lèi)的字節(jié)碼文件壓縮成一個(gè) jar文件,然后將這個(gè)文件,然后將這個(gè)jar文件存放到文件存放到Java運(yùn)行環(huán)境的擴(kuò)展中,即運(yùn)行環(huán)境的擴(kuò)展中,即 將該將該jar文件存放在文件存放在JDK安裝目錄的安裝目錄的jrelibext文件夾中。這樣,文件夾中。這樣, Java應(yīng)用程序就可以使用這個(gè)應(yīng)用程序就可以使用這個(gè)jar文件中的類(lèi)來(lái)創(chuàng)建對(duì)象了。文件中的類(lèi)來(lái)創(chuàng)建對(duì)象了。 (1 1)有包名的類(lèi))有包名的類(lèi): :TestOne和和TestTwo類(lèi)的包名為類(lèi)的包名為moon.star 首先編寫(xiě)一個(gè)清單文件:首先編寫(xiě)一個(gè)清單文件:hello.m

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論