《面向?qū)ο蟪绦蛟O(shè)計(jì)項(xiàng)目教程》課件 項(xiàng)目5 認(rèn)識(shí)類和對(duì)象_第1頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)項(xiàng)目教程》課件 項(xiàng)目5 認(rèn)識(shí)類和對(duì)象_第2頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)項(xiàng)目教程》課件 項(xiàng)目5 認(rèn)識(shí)類和對(duì)象_第3頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)項(xiàng)目教程》課件 項(xiàng)目5 認(rèn)識(shí)類和對(duì)象_第4頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)項(xiàng)目教程》課件 項(xiàng)目5 認(rèn)識(shí)類和對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

面向?qū)ο蟪绦蛟O(shè)計(jì)項(xiàng)目教程本章學(xué)習(xí)目標(biāo):●

了解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想●

掌握類和對(duì)象的聲明與使用●

熟練掌握方法的聲明,參數(shù)的傳遞和方法的重載●

掌握this和static關(guān)鍵字的使用●

掌握訪問控制修飾符●

了解包的聲明和使用●

了解單例類的概念項(xiàng)目5認(rèn)識(shí)類和對(duì)象任務(wù)1part了解面向?qū)ο笏枷朐谲浖_發(fā)領(lǐng)域有兩種主流的開發(fā)方法:結(jié)構(gòu)化開發(fā)方法(StructureAnalysisStructureDesign,SASD)和面向?qū)ο?ObjectOriented,OO)開發(fā)方法。

結(jié)構(gòu)化開發(fā)又叫面向過程開發(fā),

如BASIC、C語言、FORTRAN、Pascal等都支持機(jī)構(gòu)化開發(fā),其基本原理是將一個(gè)軟件分為多個(gè)過程(函數(shù))進(jìn)行開發(fā),用結(jié)構(gòu)體(Struct)管理數(shù)據(jù)。1.1面向?qū)ο蠛?jiǎn)介面向?qū)ο蠛?jiǎn)介面向?qū)ο蟮拈_發(fā)方法具有以下優(yōu)點(diǎn)。

(1)把軟件系統(tǒng)看成是各種對(duì)象的集合,接近于人類的思維方式,可以使人的思路更加明確。

(2)軟件的功能需求發(fā)生變動(dòng)時(shí),功能的執(zhí)行者——對(duì)象一般不會(huì)發(fā)生有大的變化,這使得按照對(duì)象設(shè)計(jì)出來的系統(tǒng)結(jié)構(gòu)比較穩(wěn)定。

(3)對(duì)象包括屬性(數(shù)據(jù))和行為(方法),對(duì)象把數(shù)據(jù)和方法的具體實(shí)現(xiàn)封裝在一起,提高了每個(gè)子系統(tǒng)的相對(duì)獨(dú)立性,從而提高了軟件的可維護(hù)性。

(4)支持封裝、繼承、多態(tài)和抽象,提高了軟件的可重用性、可維護(hù)性和可擴(kuò)展性。1.1面向?qū)ο蠛?jiǎn)介

面向?qū)ο蟮幕久Q包括對(duì)象、類、消息、封裝性、繼承性和多態(tài)性。1.對(duì)象對(duì)象是實(shí)體的抽象,由一組表示其靜態(tài)特征的屬性和它可執(zhí)行的一組操作組成。

在面向?qū)ο箝_發(fā)方法中,每個(gè)對(duì)象都是具體的,也是唯一的。2.類

類(class)是具有相同或相似性質(zhì)的具體事物抽象化,類是對(duì)象的模板,對(duì)象是類的具體化,是對(duì)應(yīng)類的一個(gè)具體實(shí)例。3.消息

消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,是對(duì)象之間進(jìn)行通信的一種規(guī)格說明。它一般由三部分組成:

(1)接收消息的對(duì)象的名稱;

(2)消息標(biāo)識(shí)符,也稱消息名;

(3)零個(gè)或多個(gè)參數(shù)。1.2面向?qū)ο竺~

4.封裝性

封裝(Encapsulation)是一種信息隱蔽技術(shù),它體現(xiàn)于類的說明,是對(duì)象的重要特性。封裝使數(shù)據(jù)和加工該數(shù)據(jù)的方法封裝為一個(gè)整體,以實(shí)現(xiàn)獨(dú)立性很強(qiáng)的模塊,使得用戶只能見到對(duì)象的外特性(對(duì)象能接收哪些消息,具有哪些處理能力),而對(duì)象的內(nèi)特性(保存內(nèi)部狀態(tài)的私有數(shù)據(jù)和實(shí)現(xiàn)加工能力的算法)對(duì)用戶是隱蔽的。封裝的目的在于把對(duì)象的設(shè)計(jì)者和對(duì)象的使用者分開,使用者不必知曉行為實(shí)現(xiàn)的細(xì)節(jié),只需要設(shè)計(jì)者提供的消息來訪問該對(duì)象。5.繼承性

繼承(Inheritance)指子類自動(dòng)繼承父類的屬性和方法,這是類之間的一種關(guān)系。6.多態(tài)性

多態(tài)(Polymorphism)來自于希臘語,表示“多種形態(tài)”,是指相同的操作、過程可作用于多種類型的對(duì)象上并獲得不同的結(jié)果。不同的對(duì)象,收到同一消息可以產(chǎn)生不同的結(jié)果,即具有不同的表現(xiàn)行為,這種現(xiàn)象稱為多態(tài)性。1.2面向?qū)ο竺~任務(wù)2part類和創(chuàng)建對(duì)象

類(class)定義了一種新的數(shù)據(jù)類型,是具有相同特征(屬性)和共同行為(方法)的一組對(duì)象的集合。類的聲明就是定義一個(gè)類,其語法格式如下:[訪問符][修飾符]class類名{[屬性][方法]}2.1類的聲明類的聲明其中:△訪問符用于指明類、屬性或方法的訪問權(quán)限,可以是public(公共的)或默認(rèn)的?!餍揎椃糜谥该魉x的類的特性,可以是abstract(抽象的)、final(最終的)或默認(rèn)的,這些修飾符在定義類時(shí)不是必需的,需要根據(jù)類的特性進(jìn)行使用。△class是Java關(guān)鍵字,用于定義類?!黝惷侵杆x類的名字,類名的命名與變量名一樣必須符合命名規(guī)則,Java中的類名類名通常由一個(gè)或多個(gè)有意義的單詞連綴而成,每個(gè)單詞的首字母大寫,其他字母小寫?!髯笥覂蓚€(gè)大括號(hào){}括起的部分是類體?!鲗傩允穷惖臄?shù)據(jù)成員(也稱成員變量),用于描述對(duì)象的特征?!鞣椒ㄊ穷惖男袨椋ㄒ卜Q成員方法),是對(duì)象能夠進(jìn)行的操作。

實(shí)際上,我們通常建議不要將任何成員變量設(shè)定為公共的,而是對(duì)其訪問權(quán)限修飾符設(shè)定為私有的,對(duì)他們的訪問都應(yīng)當(dāng)通過相應(yīng)的getXXX()和setXXX()方法來進(jìn)行訪問,這樣的優(yōu)點(diǎn)如下:

(1)如果希望屬性是只讀的,可以只提供getXXX()方法而不提供setXXX()方法。

(2)如果希望屬性是只寫的,可以只提供setXXX()方法而不提供getXXX()方法。

(3)如果希望屬性是可讀可寫的,則同時(shí)提供getXXX()和setXXX()方法。

(4)在使用setXXX()方法設(shè)定屬性值時(shí),可以對(duì)設(shè)定的值進(jìn)行合法性檢查。

(5)在使用getXXX()方法獲取屬性值時(shí),可以對(duì)數(shù)據(jù)值進(jìn)行處理和轉(zhuǎn)換,然后再返回屬性值。2.1類的聲明

完成類的定義后,就可以使用這種新類型來創(chuàng)建該類的對(duì)象。創(chuàng)建對(duì)象需要通過關(guān)鍵new為其分配內(nèi)存空間,其語法格式如下:

類名

對(duì)象名=new構(gòu)造方法();例如:Personperson=newPerson();

上面一行代碼使用new關(guān)鍵字創(chuàng)建了Person類的一個(gè)對(duì)象person。new關(guān)鍵字為對(duì)象動(dòng)態(tài)分配內(nèi)存空間,并返回對(duì)它的一個(gè)引用,且將該內(nèi)存初始化為默認(rèn)值。

創(chuàng)建對(duì)象也可以分開寫,代碼如下:Personperson;//聲明Person類型的對(duì)象personperson=newPerson();//使用new關(guān)鍵字創(chuàng)建對(duì)象,給對(duì)象分配內(nèi)存空間2.2對(duì)象的創(chuàng)建和使用對(duì)象的創(chuàng)建和使用

聲明對(duì)象后,如果不想給對(duì)象分配內(nèi)存空間,則可以使用“null”關(guān)鍵字給對(duì)象賦值,例如:Personperson=null;

“null”關(guān)鍵字表示“空”,用于標(biāo)識(shí)一個(gè)不確定的對(duì)象,即該對(duì)象的引用為空。因此可以將null賦給引用類型變量,但不可以賦給基本類型變量。例如:privateStringname=null;//是正確的privateintage=null;//是錯(cuò)誤的null本身雖然能代表一個(gè)不確定的對(duì)象,但null不是對(duì)象,也不是類的實(shí)例。null的另外一個(gè)用途就是釋放內(nèi)存,在Java中,當(dāng)某一個(gè)非null的引用類型變量指向的對(duì)象不再使用時(shí),若想加快其內(nèi)存回收,可讓其指向null,這樣該對(duì)象將不再被使用,并由JVM拉結(jié)回收機(jī)制去回收。2.2對(duì)象的創(chuàng)建和使用

創(chuàng)建對(duì)象之后,接下來就可以使用該對(duì)象。通過使用對(duì)象運(yùn)算符“.”,對(duì)象可以實(shí)現(xiàn)對(duì)自己的變量訪問和方法的調(diào)用。使用對(duì)象大致有以下兩個(gè)作用:

△訪問對(duì)象的屬性,即對(duì)象的實(shí)例變量,格式是“對(duì)象名.屬性名”。

△訪問對(duì)象的方法,格式是“對(duì)象名.方法名()”。

如果訪問權(quán)限允許,類里定義的成員變量和方法都可以通過對(duì)象來調(diào)用,例如:person.display();//調(diào)用對(duì)象的方法2.2對(duì)象的創(chuàng)建和使用

對(duì)象數(shù)組就是一個(gè)數(shù)組中的所有元素都是對(duì)象。聲明對(duì)象數(shù)組與普通基本數(shù)據(jù)類型的數(shù)組格式一樣,具體格式如下:

類名[]數(shù)組名=new類名[數(shù)組長(zhǎng)度];

下面語句示例了創(chuàng)建一個(gè)長(zhǎng)度為5的Person類的對(duì)象數(shù)組:Person[]arrayPerson=newPerson[5];

上面的語句也可以分成兩行,等價(jià)于;Person[]arrayPerson;arrayPerson=newPerson[5];2.3對(duì)象數(shù)組Java語言類中定義的變量包括成員變量和局部變量?jī)纱箢?。成員變量定義在類體中,局部變量定義在成員方法中。成員變量又分為實(shí)例成員變量和類成員變量(全局變量或靜態(tài)成員變量)。如果一個(gè)成員變量的定義前有static關(guān)鍵字,那么它就是類成員變量(靜態(tài)成員變量),其他形式的成員變量都是實(shí)例成員變量。例如:classTest{ inta=45;//實(shí)例成員變量 staticintb=34;//類變量 voidshow(intx){//方法參數(shù)也是局部變量 inty=8;//局部變量 }}2.4變量變量

成員變量和局部變量可以定義為Java語言中的任何數(shù)據(jù)類型,包括簡(jiǎn)單類型和引用類型。成員變量和局部變量的區(qū)別如下:

●成員變量可以定義在整個(gè)類體中的任意位置,其有效性與它在類體中書寫的先后位置無關(guān),它的作用域是整個(gè)類;局部變量的作用域從定義它的位置開始,直到定義它的語句塊結(jié)束。

●成員變量和局部變量可以重名,成員方法中訪問重名的局部變量時(shí),成員變量被隱藏。如果想在成員方法中訪問重名的成員變量,需要在前面加關(guān)鍵字this。

●成員變量有默認(rèn)值,但局部變量沒有默認(rèn)值。因此,在使用局部變量之前,必須保證局部變量有具體的值。2.4變量任務(wù)3part定義方法3.1方法的聲明

方法是類的行為的體現(xiàn),定義方法的語法格式如下所示:[訪問符][修飾符]<返回值類型>方法名([參數(shù)列表]){//方法體}

其中:

△訪問符用于指明方法的訪問權(quán)限,可以是public(公共的)、protected(受保護(hù)的)、private(私有的)或默認(rèn)的。

△修飾符用于指明所定義的方法的特性,可以是abstract(抽象的)、static(靜態(tài)的)、final(最終的)或默認(rèn)的,這些修飾符在定義類方法不是必需的,需要根據(jù)方法的特性進(jìn)行使用。

△返回值類型是該方法運(yùn)行后返回值的數(shù)據(jù)類型,如果一個(gè)方法沒有返回值,則該方法的返回類型為void。

△方法名是指所定義方法的名字,方法名的命名與變量名一樣必須符合命名規(guī)則,Java中的方法名通常由一個(gè)或多個(gè)有意義的單詞連綴而成,第一個(gè)單詞的首字母小寫,其他單詞的首字母大寫,其他字母小寫。

△參數(shù)列表是方法運(yùn)行所需要特定類型的參數(shù)。

△方法體是大括號(hào)括起來的部分,用于完成方法功能的實(shí)現(xiàn)。

3.2方法的參數(shù)傳遞機(jī)制

方法的參數(shù)列表可以帶參數(shù),也可以不帶參數(shù),是否帶參數(shù)根據(jù)定義方法的具體情況而定,通過參數(shù)可以給方法傳遞數(shù)據(jù),例如:publicvoidsetAge(intage){ this.age=age;}

上述代碼定義了一個(gè)帶參數(shù)的setAge()方法,參數(shù)在方法名的小括號(hào)內(nèi),一個(gè)方法可以帶多個(gè)參數(shù),多個(gè)參數(shù)之間使用逗號(hào)隔開,例如:privateintadd(inta,intb){ returna+b;}3.2方法的參數(shù)傳遞機(jī)制

根據(jù)參數(shù)的使用場(chǎng)合,可以將參數(shù)分為“形參”和“實(shí)參”兩種:形參是聲明方法時(shí)給方法定義的形式上的參數(shù),此時(shí)形參沒有具體的數(shù)值,形參前必須有數(shù)據(jù)類型,其格式是“方法名(數(shù)據(jù)類型

形參)”;實(shí)參是調(diào)用方法時(shí)程序給方法傳遞的實(shí)際數(shù)據(jù),實(shí)參前面沒有數(shù)據(jù)類型,其使用格式是“對(duì)象名.方法名(實(shí)參)”。

形參本身沒有具體的數(shù)值,需要實(shí)參將實(shí)際的數(shù)值傳遞給它之后才具有數(shù)值。實(shí)參和形參之間傳遞數(shù)值的方式有兩種:值傳遞和引用傳遞。3.2方法的參數(shù)傳遞機(jī)制1.值傳遞

值傳遞是將實(shí)參的值傳遞給形參,被調(diào)方法為形參創(chuàng)建一份新的內(nèi)存拷貝來存儲(chǔ)實(shí)參傳遞過來的值,然后再對(duì)形參進(jìn)行數(shù)值操作。值傳遞時(shí),實(shí)參和形參在內(nèi)存中占不同的空間,當(dāng)實(shí)參的值傳遞給形參后,兩者之間將互不影響,因此形參值的改變不會(huì)影響原來實(shí)參的值。在Java中,當(dāng)參數(shù)的數(shù)據(jù)類型是基本數(shù)據(jù)類型時(shí),實(shí)參和形參之間是按值傳遞的。下述代碼示例參數(shù)的值傳遞。3.2方法的參數(shù)傳遞機(jī)制2.引用傳遞

引用傳遞時(shí)將實(shí)參的地址傳遞給形參,被調(diào)方法通過傳遞的地址獲取其指向的內(nèi)存空間,從而在原來的內(nèi)存空間直接進(jìn)行操作。引用傳遞時(shí),實(shí)參和形參指向內(nèi)存中的同一空間,因此當(dāng)修改了形參的值時(shí),實(shí)參的值也會(huì)改變。在Java中,當(dāng)參數(shù)的數(shù)據(jù)類型是引用類型時(shí),如類、數(shù)組,實(shí)參和形參之間會(huì)是按引用傳遞值的。下述代碼示例參數(shù)的引用傳遞。3.3構(gòu)造方法

構(gòu)造方法是類的一個(gè)特殊方法,用于創(chuàng)建對(duì)象是初始化對(duì)象中的屬性值。它具有如下特點(diǎn)。

(1)訪問權(quán)限符一般是public,也可以是其他訪問符。

(2)沒有返回值,也不能有void修飾符。

(3)方法名稱必須和類名相同。

(4)如果沒有定義構(gòu)造方法,系統(tǒng)自動(dòng)定義默認(rèn)的構(gòu)造方法,該構(gòu)造方法不帶參數(shù),將類成員屬性進(jìn)行默認(rèn)賦值;如果為類定義了構(gòu)造方法,系統(tǒng)將不創(chuàng)建默認(rèn)構(gòu)造方法,而執(zhí)行用戶定義的構(gòu)造方法。

(5)構(gòu)造方法可以重載,通過構(gòu)造方法中參數(shù)個(gè)數(shù)不同、參數(shù)類型不同及順序的不同實(shí)現(xiàn)構(gòu)造方法的重載。

(6)在生成類的對(duì)象時(shí)調(diào)用,一個(gè)類中如果定義了多個(gè)構(gòu)造方法,則根據(jù)參數(shù)自動(dòng)選擇調(diào)用相應(yīng)的構(gòu)造方法。

構(gòu)造方法定義的語法結(jié)構(gòu)如下所示。[訪問符]構(gòu)造方法名([參數(shù)列表]){//初始化語句

}3.4方法的重載

在Java語言程序中,如果同一個(gè)類中包含了兩個(gè)或兩個(gè)以上方法的方法名相同,但參數(shù)列表不同,則被稱為方法重載,方法的重載也是多態(tài)的一種。對(duì)于重載的方法,編譯器是根據(jù)方法的參數(shù)來進(jìn)行方法綁定的。

根據(jù)方法重載的概念,也可以將方法重載分成三種類型,分別是參數(shù)類型的重載、參數(shù)數(shù)量的重載和參數(shù)順序的重載。參數(shù)類型的重載是當(dāng)實(shí)現(xiàn)重載方法的參數(shù)個(gè)數(shù)相同時(shí),而參數(shù)的類型不同;參數(shù)數(shù)量的重載是指實(shí)現(xiàn)重載的方法的參數(shù)數(shù)量不同;最后一種重載是相同參數(shù)數(shù)量的方法,但參數(shù)順序不同。注意,方法的返回值類型不是方法簽名的一部分,因此進(jìn)行方法重載的時(shí)候,不能將返回值類型的不同當(dāng)成兩個(gè)方法的區(qū)別。

方法重載必須遵守以下三條原則:

(1)在同一個(gè)類中;

(2)方法名相同

(3)方法的參數(shù)類型、個(gè)數(shù)及順序至少有一項(xiàng)不同。3.5static關(guān)鍵字static用來修飾類的成員變量和成員方法,同時(shí)與可以修飾代碼塊,表示靜態(tài)的代碼塊。靜態(tài)的成員變量和成員方法獨(dú)立于類的對(duì)象,被類的所有實(shí)例共享。因此可不生成類的任何對(duì)象,直接通過類實(shí)現(xiàn)對(duì)靜態(tài)成員的訪問。當(dāng)類加載后,Java虛擬機(jī)能根據(jù)類名在運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)內(nèi)找到它們。

訪問類的靜態(tài)變量和靜態(tài)方法時(shí),可以直接通過類名訪問,語法格式如下:

類名.靜態(tài)方法名(形參列表);

類名.靜態(tài)變量名;3.6this關(guān)鍵字this是Java語言中一個(gè)非常重要的關(guān)鍵字,用來表示當(dāng)前實(shí)例。它可以出現(xiàn)在實(shí)例成員方法和構(gòu)造方法中,但不可以出現(xiàn)在類成員方法中。this關(guān)鍵字有兩種用法,其一是作用在成員方法和構(gòu)造方法中,代表正在調(diào)用該方法的實(shí)例,如果方法的參數(shù)和類中的成員變量重名時(shí),必須使用this關(guān)鍵字,以區(qū)分實(shí)例變量和成員方法變量;如果方法的參數(shù)名和成員變量名不重名時(shí),this可以省略。this關(guān)鍵字的第二種用法,就是放在構(gòu)造方法中,使用this(參數(shù)列表)的方式,來調(diào)用類中其他的構(gòu)造方法,而且this(參數(shù)列表)必須放在第一行。3.7可變參數(shù)

前面講述方法時(shí)定義的參數(shù)個(gè)數(shù)都是固定的,而從JDK1.5之后,Java允許定義方法時(shí)參數(shù)的個(gè)數(shù)可以變化,這種情況稱為“可變參數(shù)”。定義可變參數(shù)非常簡(jiǎn)單,只需在方法的最后一個(gè)參數(shù)的數(shù)據(jù)類型后增加3個(gè)點(diǎn)(…)即可,其具體語法格式如下:[訪問符][修飾符]<返回值類型>方法名([參數(shù)列表],數(shù)據(jù)類型…變量){//方法體}

可變參數(shù)需要注意以下幾點(diǎn):

△可變參數(shù)只能處于參數(shù)列表的最后。

△一個(gè)方法中最多只能包含一個(gè)可變參數(shù)。

△可變參數(shù)的本質(zhì)就是一個(gè)數(shù)組,因此在調(diào)用一個(gè)包含可變參數(shù)的方法時(shí),既可以傳入多個(gè)參數(shù),也可以傳入一個(gè)數(shù)組。

下述代碼示例了可變參數(shù)的應(yīng)用??勺儏?shù)任務(wù)4part實(shí)現(xiàn)包的封裝4.1包的聲明定義包的語法格式如下:package包名;使用package關(guān)鍵字可以指定類所屬的包,定義包需要注意以下幾點(diǎn):△package語句必須作為Java源文件的第一條非注釋性語句。△一個(gè)Java源文件只能指定一個(gè)包,即只有一條package語句,不能有多條package語句。△定義包以后,Java源文件中可以定義多個(gè)類,這些類將全部位于該包下。△多個(gè)Java源文件可以定義相同的包,這些源文件將全部位于該包下。4.2包的導(dǎo)入Java中一個(gè)類可以訪問其所在包中的其他所有的類,但是如果需要訪問其他包中的類,則可以使用import語句導(dǎo)入包。Java中導(dǎo)入包的語法格式如下:import包名.*;//導(dǎo)入指定包中所有的類

或import包名.類名;//導(dǎo)入指定包中指定的類

注意,*指明導(dǎo)入當(dāng)前包中的所有類,但不能使用“java.*”或“java.*.*”這種語句來導(dǎo)入以java為前綴的所有包的所有類。一個(gè)Java源文件只能有一條package語句,但可以有多條import語句,且package語句必須在import語句之前。

導(dǎo)入包以后,可以在代碼中直接訪問包中的相關(guān)類。當(dāng)然,也可以不使用import語句倒入相應(yīng)的包,只需在使用的類名前直接添加完整的包名即可。例如:java.util.DatenewDate=newjava.util.Date();

當(dāng)程序中導(dǎo)入兩個(gè)或多個(gè)包中同名的類后,如果直接使用類名,編譯器將無法區(qū)分,此時(shí)就可以使用上述方式,在類名前面加上完全限定的包名。4.3Java的常用包Java的核心類都放在java這個(gè)包及其子包下,Java擴(kuò)展的許多類都放在javax包及其子包下。這些使用類就是應(yīng)用程序接口。下面幾個(gè)包是Java語言中的常用包。

△java.lang:這個(gè)包下包含了Java語言的核心類,如String、Math、System和Thread類等,使用這個(gè)包下的類無須使用import語句導(dǎo)入,系統(tǒng)會(huì)自動(dòng)導(dǎo)入這個(gè)包下的所有類。

△java.util:這個(gè)包下包含了Java的大量工具類/接口和集合框架類/接口,例如Arrays、List和Set等。

△java.net:這個(gè)包下包含了一些Java網(wǎng)絡(luò)編程相關(guān)的類/接口。

△java.io:這個(gè)包下包含了一些Java輸入/輸出編程相關(guān)的類/接口。

△java.text:這個(gè)包下包含了一些Java格式化相關(guān)的類。

△java.sql:這個(gè)包下包含了Java進(jìn)行JDBC數(shù)據(jù)庫(kù)編程相關(guān)的類/接口。

△java.awt:這個(gè)包下包含了抽象窗口工具集和相關(guān)類/接口,這些類主要用于構(gòu)建圖形用戶界面(GUI)程序。

△java.swing:這個(gè)包下包含了Swing圖形用戶界面編程的相關(guān)類/接口,這些類可用于構(gòu)建平臺(tái)無關(guān)的GUI程序。4.4垃圾回收機(jī)制Java語言中很多對(duì)象的數(shù)據(jù)(成員變量)都存放在堆中,對(duì)象從中分配空間,Java虛擬機(jī)的堆中存儲(chǔ)著正在運(yùn)行的應(yīng)用程序所建立的所有對(duì)象,這些對(duì)象通過new等關(guān)鍵字建立,但是它們不需要程序代碼來顯示地釋放。一般來說,堆中的無用對(duì)象是由垃圾回收器來負(fù)責(zé)的,盡管Java虛擬機(jī)規(guī)范并不要求特殊的垃圾回收技術(shù),甚至根本就不需要垃圾回收,但是由于內(nèi)存的有限性,虛擬機(jī)在實(shí)現(xiàn)的時(shí)候都有一個(gè)由垃圾回收器管理的堆。垃圾回收是一種動(dòng)態(tài)存儲(chǔ)管理技術(shù),它自動(dòng)地釋放不再被程序引用的對(duì)象,按照特定的垃圾收集算法來實(shí)現(xiàn)資源自動(dòng)回收的功能。當(dāng)一個(gè)對(duì)象不再被引用時(shí),垃圾收集器會(huì)在適當(dāng)?shù)臅r(shí)候?qū)⑵滗N毀,適當(dāng)?shù)臅r(shí)候,即意味著無法預(yù)知何時(shí)垃圾收集器會(huì)進(jìn)行工作。當(dāng)對(duì)象被回收的時(shí)候,finalize()方法會(huì)被虛擬機(jī)自動(dòng)調(diào)用,如果重寫了finalize()方法,這個(gè)方法也會(huì)被自動(dòng)執(zhí)行。一般用戶不自行調(diào)用finalize()方法。任務(wù)5part應(yīng)用訪問權(quán)限修飾符

面向?qū)ο蟮姆诸愋孕枰玫椒庋b,為了實(shí)現(xiàn)良好的封裝,需要從以下兩個(gè)方面考慮:

△將對(duì)象的成員變量和實(shí)現(xiàn)細(xì)節(jié)隱藏起來,不允許外部直接訪問;

△把方法暴露出來,讓方法對(duì)成員變量進(jìn)行安全訪問和操作。Java提供了四個(gè)訪問權(quán)限修飾符,分別是private(私有的)、protected(受保護(hù)的)、public(公共的)和默認(rèn)的。其中,默認(rèn)訪問符又稱友好的(friendly),而friendly不是關(guān)鍵字,它只是一種默認(rèn)訪問權(quán)限修飾符的稱謂而以。訪問權(quán)限修飾符Java的訪問權(quán)限修飾符級(jí)別由小到大如圖5.4所示。訪問權(quán)限修飾符

這四個(gè)訪問權(quán)限修飾符級(jí)別的詳細(xì)介紹如下。

△private(當(dāng)前類訪問權(quán)限):如果類中的一個(gè)成員(包括屬性、成員方法和構(gòu)造方法等)使用private訪問權(quán)限修飾符來修飾,則這個(gè)成員只能在當(dāng)前類的內(nèi)部被訪問。很顯然,這個(gè)訪問權(quán)限修飾符用來修飾屬性最合適,使用它來修飾屬性就可以把屬性隱藏在該類的內(nèi)部。

訪問權(quán)限修飾符

△默認(rèn)的(包訪問權(quán)限):如果類中的一個(gè)成員(包括屬性、成員方法和構(gòu)造方法等)或者一個(gè)外部類不使用任何訪問權(quán)限修飾符,我們稱它是包訪問權(quán)限,默認(rèn)修飾符控制的成員和外部類可以被相同包下的其他類訪問。

△protected(子類訪問權(quán)限):如果類中的一個(gè)成員(

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論