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

下載本文檔

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

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論