第3章 Java中的對(duì)象與_第1頁(yè)
第3章 Java中的對(duì)象與_第2頁(yè)
第3章 Java中的對(duì)象與_第3頁(yè)
第3章 Java中的對(duì)象與_第4頁(yè)
第3章 Java中的對(duì)象與_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章Java中的對(duì)象與類Java語言是純粹的面向?qū)ο蟮木幊陶Z言。因此,面向?qū)ο笤O(shè)計(jì)開發(fā)程序的思想,就是Java的核心內(nèi)容。在這一章中,將首先簡(jiǎn)單介紹一些面向?qū)ο蟪绦蛟O(shè)計(jì)的基本理念。在此基礎(chǔ)上,將介紹Java中如何開發(fā)自己的類,以及如何通過類創(chuàng)建對(duì)象,并且向大家深入介紹面向?qū)ο蟮闹饕匦浴M瑫r(shí)用最為簡(jiǎn)單的例子,來分別向大家介紹如何使用繼承、接口、內(nèi)部類等技術(shù)。3.1面向?qū)ο蟾攀雒嫦驅(qū)ο螅∣bjectOriented簡(jiǎn)稱OO)是當(dāng)今主流的程序設(shè)計(jì)方式,取代了70年代的“過程化”程序設(shè)計(jì)。Java是完全面向?qū)ο蟮恼Z言,用其進(jìn)行面向?qū)ο蟮能浖_發(fā)是非常方便、高效的。本節(jié)將對(duì)面向?qū)ο蟮幕A(chǔ)知識(shí)進(jìn)行簡(jiǎn)單地介紹,主要包括面向?qū)ο蟪绦蛟O(shè)計(jì)思想的誕生、面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)思想的對(duì)比、面向?qū)ο蠹夹g(shù)的背景和特點(diǎn)等三方面的內(nèi)容。隨著軟件復(fù)雜度的提高,以及Internet的迅猛發(fā)展,原先面向過程的軟件開發(fā)方式已經(jīng)很難滿足軟件開發(fā)的需要。針對(duì)日趨復(fù)雜的軟件需求挑戰(zhàn),軟件業(yè)界發(fā)展出了面向?qū)ο蟮能浖_發(fā)模式。目前作為針對(duì)軟件危機(jī)的最佳對(duì)策,OO技術(shù)已經(jīng)引起人們的普遍關(guān)注。3.2類的定義與對(duì)象的創(chuàng)建如果一切都是對(duì)象,那么是什么決定了某一類對(duì)象的外觀與行為呢?答案是“類”。類是構(gòu)造對(duì)象的模板或藍(lán)圖。如建筑物與設(shè)計(jì)圖紙的關(guān)系一樣,通過一份設(shè)計(jì)圖紙,可以建造出很多建筑物,而Java開發(fā)人員在編寫代碼時(shí),實(shí)際上是在編寫類代碼,對(duì)象只有程序運(yùn)行時(shí)才存在。當(dāng)創(chuàng)建一個(gè)Java程序時(shí),可以通過類聲明來定義類,然后使用類來創(chuàng)建用戶需要的對(duì)象。類聲明是用來創(chuàng)建對(duì)象模板的抽象規(guī)格說明。在前面的一些章節(jié)中,已經(jīng)編寫過一些簡(jiǎn)單的類,只是那些類一般只有main方法。3.3包的使用在實(shí)際項(xiàng)目開發(fā)中,往往需要開發(fā)很多不同的類,能否方便高效地組織這些類對(duì)項(xiàng)目的開發(fā)與使用具有很重要的意義。Java中提供包將不同類組織起來進(jìn)行管理,借助于包可以方便地組織自己的類代碼,并將自己的代碼與別人提供的代碼庫(kù)分開管理。使用包的重要目的之一就是可以在同一個(gè)項(xiàng)目中使用名稱相同的類,假如兩個(gè)開發(fā)人員不約而同地建立了兩個(gè)相同名字的類,只要將其放置在不同的包中,就不會(huì)產(chǎn)生沖突。本節(jié)將從類的放置與導(dǎo)入兩個(gè)方面對(duì)包及其使用進(jìn)行介紹,主要包括如下內(nèi)容:(1)聲明創(chuàng)建包(2)引入包內(nèi)的資源3.3.1聲明創(chuàng)建包要想將類放入指定的包中,就必須使用package語句,具體語法如下。package<包名>;聲明創(chuàng)建包必須注意以下幾點(diǎn):(1)package語句必須放在源文件的最前面,其之前不可以有其他任何語句。(2)每個(gè)源文件中最多有一句package語句,因?yàn)橐粋€(gè)類不可能屬于兩個(gè)包,就如同不能把一件衣服同時(shí)放進(jìn)兩個(gè)箱子一樣。(3)包名可以是用點(diǎn)“.”分隔的一個(gè)序列,如java.lang,這就表示此源文件中的類在java包下的lang子包中。3.3.2引入包內(nèi)的資源當(dāng)一個(gè)類要使用與自己處在同一個(gè)包中的類時(shí),直接訪問即可。若要使用其他包中的類就必須使用import語句,基本語法如下。import<包名>.*;import<包名>.類名;1.兩個(gè)包中有同名類,但只用到其中一個(gè)及其他不同名的類2.兩個(gè)包中有同名類,且都要使用3.4類的成員變量和方法類的成員變量和方法是組成類的基本元素。成員變量是用來描述類所抽象出的屬性,而方法則是用來獲取或改變這些屬性的值。在這一節(jié)中,將主要介紹如何聲明和使用類中的成員變量。3.4.1訪問修飾符首先,在了解類的成員變量之前必須先對(duì)訪問修飾符有一個(gè)大概的了解。在Java程序中,訪問修飾符可以出現(xiàn)在類、成員變量、構(gòu)造方法或方法前,是用來控制訪問權(quán)限的修飾符。Java語言中提供了如下所示四種形式的訪問修飾符。(1)public:(2)private:(3)protect:(4)(default):3.4.2成員變量定義一個(gè)類后,就可以在類體中聲明兩種類的成員,成員變量與成員方法。本節(jié)介紹與成員變量開發(fā)相關(guān)的一些知識(shí),主要包括成員變量的開發(fā)與使用、成員變量的初始值以及對(duì)象引用變量的比較等內(nèi)容。成員變量就是類的屬性,類定義中的屬性指定了使一個(gè)對(duì)象區(qū)別于其他對(duì)象的值。比如,學(xué)生類的定義中包括年齡、姓名和班級(jí)這些屬性,每個(gè)對(duì)象的這些屬性都有自己的值。所有由類定義建立的對(duì)象都共享類的方法,但是,它們都擁有各自屬性變量的副本。3.4.3成員變量的初始值每當(dāng)創(chuàng)建一個(gè)對(duì)象后,如果對(duì)象有成員變量,則系統(tǒng)會(huì)自動(dòng)為其分配一個(gè)初始值。下面將對(duì)基本數(shù)據(jù)類型與對(duì)象引用類型成員變量分別進(jìn)行介紹。1.基本數(shù)據(jù)類型成員變量2.對(duì)象引用型成員變量3.4.4方法在Java中,對(duì)對(duì)象的操作由方法來完成。要使一個(gè)對(duì)象完成某些工作,就要調(diào)用其相應(yīng)的方法。方法實(shí)際上描述的是一個(gè)行為,一種功能,決定了一個(gè)對(duì)象能夠接收什么樣的消息,做出什么反應(yīng)。方法的基本組成包括:方法的聲明以及方法體,基本語法如下:返回值類型方法名(參數(shù)序列){方法體}1.參數(shù)序列2.方法體3.返回值類型3.4.5構(gòu)造方法構(gòu)造方法是類中一個(gè)特殊的方法。與其他方法不同,構(gòu)造方法主要是用來初始化類,創(chuàng)建類的實(shí)例(也就是類的對(duì)象,之后會(huì)詳細(xì)介紹)。構(gòu)造方法的名字和類的名字是相同的。并且沒有返回值類型。在構(gòu)造方法前,只可以使用訪問修飾符public、private及protected。在Java程序中創(chuàng)建一個(gè)類,若要讓這個(gè)類工作,就必須創(chuàng)建這個(gè)類的對(duì)象。3.4.6參數(shù)的傳遞同其他的編程語言一樣,既然存在方法,就會(huì)有參數(shù)的傳遞。前面介紹過,方法參數(shù)就是方法圓括號(hào)內(nèi)的常量值、變量、表達(dá)式或函數(shù)。當(dāng)定義方法時(shí),這時(shí)方法中的參數(shù)稱為形式參數(shù)(形參),使用來反映參數(shù)的類型及個(gè)數(shù)的;而當(dāng)我們調(diào)用該方法時(shí),這時(shí)的參數(shù)稱之為實(shí)際參數(shù)(實(shí)參)。通過參數(shù)的傳遞,可以將變量的值傳遞給方法內(nèi)部進(jìn)行處理,但需要注意的是,在Java中,傳遞的參數(shù)共有如下所示兩種.(1)基本類型參數(shù):(2)對(duì)象引用型參數(shù):3.5抽象類與接口在之前,已經(jīng)向大家介紹過類的定義與對(duì)象的創(chuàng)建。本節(jié)將要介紹Java語言中兩種較為常用的技術(shù):抽象類和接口。3.5.1抽象類與抽象方法abstract關(guān)鍵字是抽象修飾符,只能用于修飾類和方法。該關(guān)鍵字用來表明所定義的類或方法是未實(shí)現(xiàn)的。(1)抽象類:(2)抽象方法:3.5.2接口Java語言中的接口不同于一般的類,通常都稱之為接口類,是用來描述類的功能的。在接口類中,定義了抽象的方法和常量,形成一個(gè)屬性集合,該屬性集合代表了一組功能的實(shí)現(xiàn)。之在Java語言中,一個(gè)類只能繼承一個(gè)父類;但是一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,因此使用接口主要是為了實(shí)現(xiàn)類似于類的多重繼承功能。接口的聲明需要使用interface關(guān)鍵字來實(shí)現(xiàn)。接口聲明的語法格式,如下代碼片斷所示:[public]interface接口名[extends父類接口]{[public][static][final]常量類型 常量名=常量值;[public][abstract]返回類型方法名(參數(shù)列表)[throw異常列表]}3.6final關(guān)鍵字finnal關(guān)鍵字可以用于類、方法、變量前,用來表示該關(guān)鍵字所修飾的類、方法、變量具有不可變的特性。具體情況如下所述。(1)final關(guān)鍵字用于基本數(shù)據(jù)類型變量前:(2)final關(guān)鍵字用于方法聲明前:(3)final關(guān)鍵字用于類名前:3.7類的繼承繼承是兩個(gè)類之間的一種關(guān)系。當(dāng)一個(gè)類A繼承了一個(gè)已存在的類B后,類A就擁有了類B所有的非private的屬性和方法,但同時(shí),類A中還可以根據(jù)需要,添加新的方法和屬性。簡(jiǎn)單的說,繼承就是創(chuàng)建一個(gè)新的類,并使這個(gè)類復(fù)制了一個(gè)已經(jīng)存在的類,并在其基礎(chǔ)上進(jìn)行了擴(kuò)展。一般會(huì)將被繼承的類稱為父類或超類,繼承父類或超類的類稱之為子類。在Java語言中,一個(gè)類可以擁有多個(gè)子類,但是一個(gè)子類只能擁有一個(gè)父類。父類實(shí)際上是所有子類的公共屬性的集合。而每一個(gè)子類則是父類的一個(gè)擴(kuò)展或特殊化。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,采用繼承的機(jī)制來組織、設(shè)計(jì)系統(tǒng)中的類,可以使得程序結(jié)構(gòu)清晰、降低編碼和維護(hù)的工作量,同時(shí)可以提高程序的抽象程度,使之更加接近于人類的思維方式,提高了程序開發(fā)的效率。3.7.1如何定義子類在Java程序中,若要定義子類,就需要使用“extends”關(guān)鍵字。其語法格式如下所示:class子類名extends父類名{//類體:包含屬性和方法}3.7.2方法的覆蓋父類中的方法使用繼承的過程中,可以實(shí)現(xiàn)方法的覆蓋。方法的覆蓋只是存在于父類和子類之間。當(dāng)父類中的一個(gè)方法在它的子類中重新獲得定義時(shí),若該方法的方法名、參數(shù)、返回值類型均不變,只有方法體發(fā)生了變化時(shí),就稱子類的方法覆蓋了父類方法。3.7.3this與super關(guān)鍵字本小節(jié)將介紹super關(guān)鍵字與this關(guān)鍵字的相關(guān)知識(shí)與用法。1.this關(guān)鍵字2.super關(guān)鍵字3.7.4繼承的層次結(jié)構(gòu)Java語言的繼承關(guān)系中,一個(gè)類最多只能有一個(gè)父類。但一個(gè)父類可以同時(shí)擁有多個(gè)不同的子類。換句話說,父類實(shí)際上是所有子類的公共屬性的集合。而每一個(gè)子類則是父類的一個(gè)擴(kuò)展或特殊化。在這里以交通工具這個(gè)抽象概念為例,來說明類之間繼承的層次結(jié)構(gòu)。交通工具類是所有交通工具的共同屬性的集合,這些共同屬性包括移動(dòng)速度、承載人數(shù)、載貨量、所處狀態(tài)等靜態(tài)屬性;同時(shí)也包含了啟動(dòng)、停止、加速、減速、維修等一些動(dòng)態(tài)的行為方法。在這個(gè)基礎(chǔ)上,將交通工具類具體化、特殊化,就會(huì)派生出三個(gè)子類,包括:陸地交通工具、海上交通工具和空中交通工具三個(gè)子類。3.7.4繼承的層次結(jié)構(gòu)3.8static關(guān)鍵字被static修飾的成員與普通的成員有很大的不同,因此本書將其作為一個(gè)獨(dú)立的概念來處理。static關(guān)鍵字只能修飾成員,只要身份是成員便

溫馨提示

  • 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)論