版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο蟮谌翵ava程序設(shè)計(jì)與應(yīng)用新工科建設(shè)之路·計(jì)算機(jī)類規(guī)劃教材01面向?qū)ο蟮母拍頟ARTONE面向?qū)ο蟮母拍蠲嫦驅(qū)ο笫钱?dāng)今主流的程序設(shè)計(jì)方法,其基本思想是使用對象、類、繼承、封裝、消息等基本概念來進(jìn)行程序設(shè)計(jì)。從現(xiàn)實(shí)世界中客觀存在的事物(對象)出發(fā)來構(gòu)造軟件系統(tǒng),并且在軟件系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。面向?qū)ο蟮母拍钔ㄟ^掌握面向?qū)ο缶幊陶Z言,軟件開發(fā)人員能夠開發(fā)岀復(fù)雜的、具有良好性能的軟件系統(tǒng)。Java充分體現(xiàn)了面向?qū)ο缶幊痰乃枷?,它具有完善的對象模型,提供了龐大的Java類庫,有一套完整的面向?qū)ο蠼鉀Q方案和體系結(jié)構(gòu)。面向?qū)ο缶幊痰娜筇匦允欠庋b、繼承、多態(tài)。面向?qū)ο蟮母拍?10302封裝封裝是指將對象的屬性與行為封裝起來,放置在一個邏輯單元內(nèi),外界對客體內(nèi)部屬性的所有訪問只能通過提供的用戶接口實(shí)現(xiàn)。繼承繼承是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。多態(tài)多態(tài)是指相同的操作或函數(shù)、過程可作用于多種類型的對象上并獲得不同的結(jié)果。不同的對象收到同一消息可以產(chǎn)生不同的結(jié)果。02類與對象PARTTWO類與對象類和對象類是具有相同屬性和行為的一組對象的集合,它抽象出一組對象所具有的共同特性。它為屬于該類的所有對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個主要部分。在面向?qū)ο蟮木幊陶Z言中,類是一個獨(dú)立的程序單位。類與對象類和對象人類認(rèn)識事物的特點(diǎn)是先認(rèn)識個體對象,然后將具有相同屬性和行為的對象劃分成同一類。類是描述對象的“基本原型”,它定義了一類對象所能擁有的屬性和行為。對象是系統(tǒng)中用來描述客觀事物的一個實(shí)體,它是構(gòu)成系統(tǒng)的一個基本單位。對象是現(xiàn)實(shí)世界中可以明確標(biāo)識的一個實(shí)體。類是對象的抽象,描述了一組對象的靜態(tài)特征和表現(xiàn)的行為。類與對象類的定義定義一個類,就是定義這個類的屬性和方法。屬性也稱為成員變量,描述了類的靜態(tài)特性。類的方法描述了類的行為動作。屬性和方法一起稱為類的成員,類是定義對象屬性和行為的集合。類與對象類的定義通常使用關(guān)鍵字class來創(chuàng)建類,類定義的基本格式如下。類與對象01類的修飾符類的修飾符用來表示類的作用范圍,修飾符有default和public。03類體類定義中的大括號部分稱為類體,類體包含兩大部分:屬性的聲明和初始化及方法的定義。02類名Java的類名必須符合Java標(biāo)識符的命名規(guī)則。一般由一個或多個單詞組成。類與對象04屬性屬性的訪問修飾符用來表示屬性的訪問權(quán)限,包含public、protected、default、private這4個關(guān)鍵字中的一個。屬性的聲明格式如下:05成員方法成員方法是一個功能模塊,類似于C語言中的函數(shù),包括方法頭和方法體,聲明的基本格式如下:類與對象對象的創(chuàng)建和使用當(dāng)我們定義了類以后,還需要根據(jù)類來創(chuàng)建實(shí)例對象,這樣就可以使用這個對象的成員變量和成員方法。對象的創(chuàng)建包括對象的聲明、實(shí)例化和初始化三部分。類與對象01聲明聲明即定義一個類的變量,格式為02實(shí)例化當(dāng)聲明類的變量后,下一步就要使用new關(guān)鍵字符來創(chuàng)建對象,在內(nèi)存中開辟空間來存放數(shù)據(jù)。格式為:類與對象03初始化對象經(jīng)過聲明和實(shí)例化后,系統(tǒng)會通過構(gòu)造方法為對象的每個成員變量賦值。如果變量沒有顯式的賦值,則賦給變量默認(rèn)值。類與對象構(gòu)造方法構(gòu)造方法稱為構(gòu)造器或者構(gòu)造函數(shù),主要的作用是在對象被創(chuàng)造時,對對象的成員變量賦初始值。一旦定義了構(gòu)造函數(shù),在對象創(chuàng)建后,在new關(guān)鍵字作用前,就會自動調(diào)用構(gòu)造函數(shù),完成成員變量的初始化。構(gòu)造方法與普通方法類似,不同點(diǎn)有兩處:(1)構(gòu)造函數(shù)名稱與類名要一樣。(2)構(gòu)造函數(shù)沒有返回值,即使是void型的值也不返回。類與對象構(gòu)造方法每個類中可以有一個或多個構(gòu)造方法,如果程序員沒有定義構(gòu)造方法,系統(tǒng)會自動為這個類產(chǎn)生一個默認(rèn)的構(gòu)造方法。這個方法沒有參數(shù),什么也不做。而一旦程序員為該類定義了構(gòu)造方法,系統(tǒng)就不再提供默認(rèn)的構(gòu)造方法。類與對象01無參構(gòu)造方法【例3-3】Book類無參構(gòu)造方法。類與對象01無參構(gòu)造方法其運(yùn)行輸出結(jié)果如下:在例3-3中,Book類定義了一個成員變量title,賦值為“面向?qū)ο缶幊獭?,同時定義了一個無參構(gòu)造函數(shù)。在這個構(gòu)造函數(shù)內(nèi)部,將title變量的值設(shè)置為“Java程序設(shè)計(jì)”。成員方法printTitle()的作用是在控制臺輸出title的值。在main函數(shù)里,我們通過調(diào)用newBook()在內(nèi)存中實(shí)例化bookl對象,會調(diào)用Book類的無參構(gòu)造函數(shù),從而將bookl對象的title變量設(shè)置為“Java程序設(shè)計(jì)”。類與對象02有參構(gòu)造方法有參構(gòu)造方法是在定義構(gòu)造方法時增加自變量,對象的成員變量在生成時可以獲得自變量設(shè)定的值。【例3-4】Book類有參構(gòu)造方法。類與對象02有參構(gòu)造方法其輸出結(jié)果如下:類與對象03重載構(gòu)造方法重載就是允許多個同名的但形參的個數(shù)、類型或順序不同的方法存在于一個類中,當(dāng)系統(tǒng)調(diào)用這些同名的方法時,根據(jù)形參的不同來決定具體調(diào)用哪種方法。重載構(gòu)造方法是Java實(shí)現(xiàn)多態(tài)性的一種方式,是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段。類與對象this關(guān)鍵字Java中的this用于類中的方法體內(nèi),當(dāng)一個對象被創(chuàng)建后,Java虛擬機(jī)就會給這個對象分配一個引用自身的指針,這個指針的名字就是this,this指向?qū)ο蟊旧怼his主要可以實(shí)現(xiàn)以下三個方面的功能。類與對象01訪問類的成員變量在類中使用類成員變量時,引用方式是this.變量名,一般情況下,可以把this省略。但是當(dāng)成員方法或構(gòu)造方法中的局部變量與類成員變量同名時,類的成員變量就會被隱藏。此時若要訪問類的成員變量,則必須用“this.變量名”的方式顯示調(diào)用成員變量。類與對象02簡化重載的構(gòu)造方法this可以用在構(gòu)造方法中,以調(diào)用一個類中的另一個構(gòu)造方法。必須注意的是,調(diào)用時this必須在方法的第一句。03作為參數(shù)傳遞給其他對象或方法this可以把當(dāng)前對象的引用作為參數(shù)傳遞給其他對象或方法,這種情況發(fā)生在兩個類之間互相傳遞對方對象的信息,如方法或變量等。03參數(shù)傳值PARTTHREE參數(shù)傳值基本數(shù)據(jù)類型參數(shù)的傳遞基本數(shù)據(jù)類型參數(shù)的傳遞是指將基本數(shù)據(jù)類型作為參數(shù)進(jìn)行傳遞,實(shí)際參數(shù)把值傳遞給對應(yīng)的形式參數(shù)。形式參數(shù)在方法體內(nèi)部的任何改變不再影響實(shí)際參數(shù)的值。參數(shù)傳值引用類型參數(shù)的傳遞Java中除了基本數(shù)據(jù)類型,還有引用數(shù)據(jù)類型,也就是對象引用。對象引用包括類、數(shù)組和接口,當(dāng)把名稱作為形式參數(shù)進(jìn)行傳遞時,類似于地址傳遞。形式參數(shù)在方法內(nèi)部發(fā)生數(shù)據(jù)的改變會影響實(shí)際參數(shù)的值。04static關(guān)鍵字PARTFOURstatic關(guān)鍵字靜態(tài)變量由static關(guān)鍵字修飾的成員變量是靜態(tài)變量,也稱為類變量。聲明為static的變量實(shí)質(zhì)上就是全局變量。這個變量是一個類所有對象共享的成員變量,即所有的對象共享同一個地址空間。訪問靜態(tài)變量有兩種方法:第一種與前面引用變量的方式一樣,是通過對象名訪問,格式為對象名.靜態(tài)變量名。第二種直接使用類名來訪問,格式為類名.靜態(tài)變量名。static關(guān)鍵字靜態(tài)方法用static關(guān)鍵字修飾的成員方法稱為靜態(tài)方法或類方法。與靜態(tài)變量一樣,靜態(tài)方法可以使用“類名.靜態(tài)方法名”來訪問,也可以通過類的實(shí)例來訪問。static關(guān)鍵字靜態(tài)方法聲明為static的方法有以下幾條限制:(1)它們僅能調(diào)用其他的static方法。(2)它們只能訪問static數(shù)據(jù)。(3)它們不能以任何方式引用this或super。static關(guān)鍵字靜態(tài)代碼塊在方法體中可以包含代碼塊,在類中也可以包含代碼塊,但類中的代碼塊必須寫在靜態(tài)代碼塊中。靜態(tài)代碼塊中的代碼只在加載類時執(zhí)行一次,靜態(tài)代碼塊主要完成靜態(tài)變量的初始化。05基本類型的包裝類PARTFIVE基本類型的包裝類Java包含基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,其中基本數(shù)據(jù)類型在實(shí)際使用中有很多不方便的地方。例如,在Java類庫中的方法大多只接收引用數(shù)據(jù)類型的參數(shù),而不能接收基本數(shù)據(jù)類型參數(shù)。為了解決這個問題,Java為每個基本數(shù)據(jù)類型都設(shè)計(jì)了一個對應(yīng)的類來表示,這個類就稱為基本數(shù)據(jù)類型的包裝類?;绢愋偷陌b類包裝類和基本數(shù)據(jù)類型的對應(yīng)關(guān)系如表3-1所示。基本類型的包裝類包裝類和基本數(shù)據(jù)類型在進(jìn)行轉(zhuǎn)換時,引入了裝箱和拆箱的概念。裝箱是指將基本數(shù)據(jù)類型轉(zhuǎn)換為引用數(shù)據(jù)類型,拆箱是指將引用數(shù)據(jù)類型轉(zhuǎn)換為基本數(shù)據(jù)類型。我們通過int型的包裝類Integer來學(xué)習(xí)裝箱和拆箱過程。包裝類Integer構(gòu)造方法有Integer(intvalue)和Integer(Strings),因此可以將int型和String型的數(shù)字轉(zhuǎn)換為Integer型。06認(rèn)識異常PARTSIX認(rèn)識異常異常的概念異常是指程序編譯通過,但在運(yùn)行時出現(xiàn)錯誤,這些錯誤有些是可以避免的,而有些錯誤是意想不到的。在Java中把這些可能發(fā)生的錯誤稱為異常,Java提供了異常處理機(jī)制來預(yù)防和處理這種錯誤。異常處理的本質(zhì)是根據(jù)不同的異常情況做出各種處理。認(rèn)識異常異常的概念因此,在傳統(tǒng)的編程語言中,為了處理異常情況,常常采用if語句進(jìn)行判斷處理。這種處理方式會造成代碼可讀性較差,程序員工作復(fù)雜。而如果不對異常進(jìn)行處理,則會造成程序中斷。認(rèn)識異常異常的概念Java的異常處理通過5個關(guān)鍵詞來實(shí)現(xiàn),分別是try、catch、throw、throws和finally。采用異常處理機(jī)制最大的優(yōu)勢就是可以將異常情況在方法調(diào)用中傳遞將異常情況傳遞到合適的代碼段進(jìn)行處理。同時,使用異常處理機(jī)制可以將正常執(zhí)行的業(yè)務(wù)邏輯代碼與進(jìn)行異常情況處理的代碼相分離,有利于代碼的閱讀。認(rèn)識異常異常的分類在程序執(zhí)行中,會出現(xiàn)各種異常情況,這些異常情況在Java異常體系中均有定義。下面我們來介紹Java異常體系結(jié)構(gòu),圖3-1所示為Java異常類的繼承關(guān)系圖。認(rèn)識異常認(rèn)識異常異常的分類所有異常類型都是內(nèi)置類Throwable的子類,因此,Throwable在異常類層次結(jié)構(gòu)的頂層。接下來,Throwable把異常分成兩個不同分支的子類。一個分支是Exceptioiio該類包含用戶程序可能捕捉的異常情況。另一類分支由Error作為頂層,Error定義了在通常環(huán)境下不希望被程序捕獲的異常。認(rèn)識異常異常的分類RuntimeException及其子類屬于程序運(yùn)行時異常,是由于程序自身運(yùn)行導(dǎo)致產(chǎn)生的異常。例如,數(shù)組下標(biāo)越界異常,0作為被除數(shù)異常等。其他Exception子類異常屬于程序外部問題引起的異常,如文件不存在等引起的異常。Java定義的標(biāo)準(zhǔn)異常類如表3-2所示。認(rèn)識異常認(rèn)識異常異常處理機(jī)制為了方便程序進(jìn)行異常處理,Java設(shè)計(jì)了一系列異常處理機(jī)制,有助于程序能夠發(fā)現(xiàn)異常,并捕獲它們。Java提供的異常處理機(jī)制是通過try-catch-finally語句塊進(jìn)行異常的監(jiān)視、捕獲和處理的。含有異常處理的程序的一般結(jié)構(gòu)是:認(rèn)識異常異常處理機(jī)制try代碼段:try代碼段是程序的業(yè)務(wù)邏輯代碼,這段代碼可能會岀現(xiàn)一個或者多個異常,因此需要放在try語句塊內(nèi)。catch代碼塊:catch語句的參數(shù)包括一個異常類型和相對的異常對象,異常類型必須是Throwable類的子類,它指明了catch語句所處理的異常類型,當(dāng)try語句塊發(fā)生對應(yīng)異常類型的異常時,就會被當(dāng)前catch語句捕獲,程序就會跳轉(zhuǎn)到catch代碼塊執(zhí)行,catch代碼塊內(nèi)就是對異常的具體處理。認(rèn)識異常異常處理機(jī)制catch語句可以有多個,可以用于處理不同類型的異常,當(dāng)try語句塊發(fā)生異常時。系統(tǒng)會從上到下分別對每個catch語句處理的類型進(jìn)行檢測。直到找到類型相對應(yīng)的異常,進(jìn)入catch語句塊執(zhí)行代碼。其他catch語句塊就不再檢測執(zhí)行。因此catch語句的排列順序應(yīng)該是以異常類型從特殊到一般進(jìn)行排列。認(rèn)識異常finally語句由于在try語句塊的某條語句發(fā)生異常后,就進(jìn)入了catch語句塊,因此try語句塊后面的語句就不再有機(jī)會執(zhí)行,因此對一些必要的操作。如文件關(guān)閉和網(wǎng)絡(luò)連接的關(guān)閉等,程序就不能寫在try語句塊內(nèi)。通過finally語句可以指定代碼塊,這些代碼塊無論是否發(fā)生異常,都要被執(zhí)行。即使try語句塊里包含return語句,finally語句塊也會被執(zhí)行。認(rèn)識異常throws語句如果寫了一個方法可能會產(chǎn)生一個異常,但暫時不處理它,或需要等方法的調(diào)用者根據(jù)具體情況來處理。也就是這一方法并不確切地知道該如何對這一異常事件進(jìn)行處理,那么當(dāng)前這個方法必須指定方法的調(diào)用者來處理這個異常。因此可以在方法聲明中包含一個throws語句。一個throws語句列舉了一個方法可能引發(fā)的所有異常類型。認(rèn)識異常throws語句如果一個方法聲明拋出異常類,就可以使得異常對象從調(diào)用棧向后傳播,直到有合適的方法捕獲它為止。throws語句格式為:認(rèn)識異常throw語句除了通過catch語句捕獲Java運(yùn)行時的異常,程序也可以用throw語句引發(fā)明確的異常。throw語句拋出的異常類型必須是Throwable類或Throwable子類類型的一個對象。有兩種可以獲得Throwable對象的方法:在catch子句中使用參數(shù)或者用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年揚(yáng)州市婦幼保健院公開招聘高層次及緊缺專業(yè)人才8人備考題庫及答案詳解參考
- 2025年宋慶齡幼兒園工作人員公開招聘備考題庫及1套完整答案詳解
- 2025年鄭州市航空港區(qū)和昌云著鴻運(yùn)灣幼兒園招聘15人備考題庫及完整答案詳解1套
- 2025年甘肅省城鄉(xiāng)發(fā)展投資集團(tuán)有限公司招聘備考題庫及1套參考答案詳解
- 2025年非遺皮影五年人才培養(yǎng)報(bào)告
- 2025年重慶市九龍坡區(qū)華美小學(xué)教師招聘備考題庫有答案詳解
- 智能社區(qū)鄰里關(guān)系與平臺建設(shè)的2025年可行性研究
- 2025年江北新區(qū)教育局所屬事業(yè)單位公開招聘教師備考題庫及一套完整答案詳解
- 2025年武漢情智學(xué)校招聘備考題庫有答案詳解
- 2025年封丘縣建勛學(xué)校招聘備考題庫完整答案詳解
- 2026富滇銀行公司招聘面試題及答案
- 2025年南京鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫附答案
- 2025年網(wǎng)絡(luò)維護(hù)管理人員工作總結(jié)例文(2篇)
- 城銀清算服務(wù)有限責(zé)任公司2026年校園招聘16人備考題庫附答案
- 2025年河南豫能控股股份有限公司及所管企業(yè)第二批社會招聘18人筆試歷年參考題庫附帶答案詳解
- 2025年《項(xiàng)目管理認(rèn)證考試》知識考試題庫及答案解析
- 安徽消防筆試題及答案
- 書籍借閱營銷方案
- 生態(tài)冷鮮牛肉銷售創(chuàng)業(yè)策劃書范文
- 2025年高級煤礦綜采安裝拆除作業(yè)人員《理論知識》考試真題(含解析)
評論
0/150
提交評論