




已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1 2 第五章JAVA語言的類與對象 合肥學(xué)院計算機系吳曉琴 3 5 1類 類描述了具有相同狀態(tài) 屬性 和相同行為 方法 的一組對象 它抽象出一組對象的共性部分 1 Java語言中的類 類是java中的一種重要的復(fù)合數(shù)據(jù)類型 是組成java程序的基本要素 它定義了某一特定類型的所有對象的共同屬性和行為 一個類的實現(xiàn)包括兩個部分 類聲明和類體1 類聲明 類的定義格式 className privateattributes 定義類的狀態(tài)或?qū)傩?publicconstructor 定義構(gòu)造方法 publicmethods 定義類的行為或方法 要點 類的定義只是一種模型說明 并不是代表具體的東西 對象 4 2 類的定義實體包含屬性 變量 數(shù)據(jù)等 和方法 過程和函數(shù) 屬性 成員數(shù)據(jù) 方法 成員函數(shù) 5 例4 定義學(xué)生類 classStudent privateStringname 學(xué)生姓名privateintage 年齡privateintserialNumber 學(xué)號privateStringsubject 專業(yè)privateintremove 班級Stringfaculty 系publicvoiddisplay voidsetage intx 成員數(shù)據(jù) 屬性 成員函數(shù) 方法 6 5 2類的實例創(chuàng)建 1 對象 它是具有該類類型的一個特定的個體 是類的一個變量 特點 具有特定的屬性和行為 通過對象的成員變量來維護它的屬性 通過對象的成員方法 來實現(xiàn)它的行為 聲明方式 類名對象名如 WatchmyWatch 7 對象的實例化 分配出內(nèi)存空間 對象名 new類名 如 myWatch newWatch 要點 可以將對象的聲明與實例化合二為一 Java中的對象只有實例化后 系統(tǒng)才真正創(chuàng)建出它并為它分配出內(nèi)存空間 WatchmyWatch newWatch 對象的聲明與實例化合二為一 調(diào)用對象的成員 對象名 成員名 myWatch showTime 8 消息 對象之間相互作用或通訊是依靠消息來實現(xiàn)的 組成 消息的目的對象 消息所傳送到的行為 消息的行為產(chǎn)生時所需要的參數(shù)myWatch setTime 10 30 00 消息的行為產(chǎn)生時所需要的參數(shù) 消息的目的對象 消息所傳送到的行為 9 對象的生存期 創(chuàng)建 使用 刪除三個階段 1 創(chuàng)建對象 聲明并實例化 為它分配內(nèi)存空間 WatchmyWatch newWatch 聲明和實例化合二為一要點 如定義出帶參數(shù)的構(gòu)造函數(shù) 也可以watchmyWatch newWatch 10 30 00 實例化時并初始化 2 使用對象 利用對象名來操作訪問其public型的成員函數(shù)或成員數(shù)據(jù) myWatch setTime 10 30 00 10 要點 由于OOP的數(shù)據(jù)封裝特性 成員數(shù)據(jù)一般都被隱藏 因而不推薦采用對象直接訪問類中的成員數(shù)據(jù)來改變對象的狀態(tài) 而是通過對象的public型的成員函數(shù)來訪問對象的成員數(shù)據(jù) 利用對象不能訪問類中的private成員 myWatch Hour 10 錯誤 如 myWatch setTime 10 30 00 11 3 對象的刪除 清除 A 當對象失除其作用域時 系統(tǒng)自動在后臺清除這些對象 publicvoidmyFun WatchmyWatch newWatch 此時myWatch對象將被刪除 壽命不可控 12 B 用戶也可強行清除某一對象 將它置為null即可 publicvoidmyFun WatchmyWatch newWatch myWatch null 此時myWatch對象將被刪除 壽命可控 對象之間的相互關(guān)系 包含 內(nèi)嵌 繼承 關(guān)聯(lián) 引用 13 2 Java語言中的類的一般定義方式一 class類名 方式二 class類名extends父類名 方式三 class類名extends父類名implenents接口名 隱含地派生于Object類 指明父類名 指明接口名 14 3 構(gòu)造函數(shù)構(gòu)造函數(shù)主要體現(xiàn)在下面幾個方面 構(gòu)造函數(shù)名與類名同名 構(gòu)造函數(shù)是無任何返回值類型定義的public型成員函數(shù) classRectangle publicRectangle publicRectangle intx inty intw inth 15 作用 實現(xiàn)對象在實例化時的初始化 將其成員數(shù)據(jù)賦初值 RectanglerectA newRectangle 對象在實例化時未初始化RectanglerectA newRectangle 10 10 200 200 對象在實例化時初始化 構(gòu)造函數(shù)不能被顯式調(diào)用例 例 構(gòu)造函數(shù)的可能形式 類中未定義出構(gòu)造函數(shù)時 此時系統(tǒng)中會生成一個缺省的空的構(gòu)造函數(shù) 對象在實例化時將不能初始化它 重載形式 定義出多個同名的構(gòu)造函數(shù)時 從而可以在對象實例化時以多種方式初始化它 16 classRectangle publicRectangle publicRectangle intx inty intw inth voidfun publicstaticvoidmain String args Rectangle 4 7 2 3 錯誤fun 17 5 3類的修飾符 public abstract final 缺省末指定共四種類的修飾符1 public公有類 編程特性 該類可以被本包中或其它包中類成員函數(shù)使用 例 編程要求 一個Java包中 源程序中 只允許定義出一個public型的類 并且此時源程序的文件名應(yīng)與pbulic類的類名同名 編程應(yīng)用 一般可將JavaApplication中的main 函數(shù)所在的類或JavaApplet中的init 函數(shù)所在的類置為public類 18 MyPublic javaHePublic javapackagemyPackage packagehePackage importhePackage importmyPackage publicclassMyPublicpublicclassHePublic publicvoidMyFun publicvoidHeFun HePublicobj newHePublic MyPublicobj newMyPublic MyClassTwotwo newMyClassTwo HeClassTwotwo newHeClassTwo classMyClassTwoclassHeClassTwo publicvoidMyFunTwo publicvoidHeFunTwo MyPublicobj newMyPublic HePublicobj newHePublic HePublicobj newHePublic MyPublicobj newMyPublic 19 2 abstract抽象類 沒有具體對象的概念類 編程特性 包含有抽象函數(shù) 只有函數(shù)原型而沒有具體函數(shù)體定義的成員函數(shù) 的類 它定義了所有子類的共同屬性與方法集 編程要求 它一般應(yīng)是父類并且必須被繼承和派生 在派生類中應(yīng)重寫抽象函數(shù) 抽象類不能實例化其對象 而應(yīng)采用其派生類來實例它 此時執(zhí)行派生類中定義出的成員方法 抽象類中的成員不能為private成員 成員數(shù)據(jù)和成員方法 例 20 abstractclassPerson publicabstractOutObjeatFood FoodObj classChineseextendsPerson publicOutObjeatFood FoodObj classAmericanextendsPerson publicOutObjeatFood FoodObj 21 編程時 Personmem newPerson 錯誤Personmen newChinese 正確Personwomen newAmerican 正確 編程應(yīng)用 抽象類主要是為派生類提供功能實現(xiàn)的模型和要求 22 3 final 定止類 終極類 編程特性 該類不允許再被繼承與派生 但其內(nèi)的成員方法都有函數(shù)體定義 編程要求 final不能與abstract組合在一起使用來說明一個類 否則會相互矛盾 23 編程應(yīng)用 如果一個類編寫的已較豐富 或因為安全性考慮 不希望派生者再對它進行派生以覆蓋其特定的成員函數(shù)的應(yīng)用場合 固定的標準功能的類 4 缺省末指定的類 編程特性 該類只能被其所在的包中其它類使用 classMyClassextendsSuperClass 編程應(yīng)用 不共享的類 24 5 4類中的成員數(shù)據(jù) 1 成員數(shù)據(jù) 屬性 定義的一般格式訪問控制變量的種類變量的數(shù)據(jù)類型變量名 publicstaticintval 2 成員數(shù)據(jù)的訪問控制選項 public private protected privateprotected default 缺省末定義 public它可被所有形式的類訪問 通過各級對象名或在本類和子類 中的成員中訪問 protected 可以被這個類本身及它的子類 相同包或不同包中的子類 的成員訪問 但通過對象來訪問時 可以被相同包中的任何形式的類對象來訪問 而不能被不同包中的任何形式類對象訪問 缺省末指明 可被這個類本身和同一包中的所用其它子類成員訪問 但不同包中的子類成員不能訪問它 這是與protected的區(qū)別 通過對象來訪問時 則只能在相同包中的以該類或它的子類對象來訪問 private 僅能本類的各個成員函數(shù)使用 不能被任何形式的類對象或子類成員使用 privateprotected 可以被類本身及它的子類 相同包或不同包中的子類 的成員訪問 但同一包中非子類排除在外 使成員變量更具有明確繼承關(guān)系的類 25 A本包不同包public本類成員子類成員子類成員各級對象各級對象protected本類成員子類成員子類成員各級對象缺省末指明本類成員不能以任何形式訪問它子類成員 子類成員 各級對象 各級對象private本類成員不能以任何形式訪問它 26 27 A 所有類 B D 本類 C 所有子類 E 包中的子類 28 3 成員數(shù)據(jù)的種類 static 靜態(tài)變量編程應(yīng)用 它是類的變量 該類的各個對象共享某一相同的屬性量的值 如中國人的膚色例 它也可以為一個static對象成員 使用規(guī)則 利用 類名 成員名 來訪問它 29 classChinese StringchineseName 實例變量staticColorchineseSkinColor Color yellow 類變量publicChinese StringName chineseName Name publicstaticColorgetChineseColor 類方法returnchineseSkinColor 在類方法中只能訪問類變量 publicStringgetChineseName 實例方法System out println chineseSkinColor toString 訪問類變量returnchineseName 訪問實例變量 30 final Java中的常量定義 必須有初值定義 一般將final常量設(shè)計為static型 各個對象共享它 同時也節(jié)省內(nèi)存空間 classMyMath publicstaticfinaldoublePI 3 1415926 31 5 5類中的成員函數(shù)1 類中的成員函數(shù)定義的一般格式訪問控制函數(shù)的種類返回值類型函數(shù)名 形參定義 函數(shù)體 2 成員函數(shù)的訪問控制選項 其使用規(guī)則類同于成員數(shù)據(jù)的訪問控制選項 3 成員函數(shù)的種類 static成員函數(shù) 當成員函數(shù)操作privatestatic成員數(shù)據(jù)時 該成員函數(shù)應(yīng)設(shè)計為publicstatic成員函數(shù) 以便在類外能訪問它 要點 區(qū)分實例方法與類方法在編程上的不同 32 實例方法可以對當前對象的實例變量進行操作 也可以對類變量進行操作 但類方法不能對當前對象的實例變量進行操作 實例方法必須由實例對象來調(diào)用 而類方法即可以由實例對象來調(diào)用 也可以由類名來調(diào)用 在實例方法中可以使用this和super 而在類方法中不能使用this和super 33 實例演示如下 ChineseMrZhang newChinese ZhangMing MrZhang getChineseName 實例方法必須由實例對象來調(diào)用MrZhang getChineseColor 類方法即可以由實例對象來調(diào)用Chinese getChineseColor 也可以由類名來調(diào)用 final成員函數(shù) 在派生類中不能重寫基類中的final成員函數(shù) 防止子類對父類中的關(guān)鍵性方法的錯誤地重定義 abstract成員函數(shù) 類中只有函數(shù)原型定義而無函數(shù)定義體的成員函數(shù) 34 終結(jié)函數(shù) 類體中以如下方式定義出的成員函數(shù) classMyClass protectedvoidfinalize throwthrowable 本類的清理任務(wù) super finalize 然后應(yīng)調(diào)用父類中的finalize 以清除從父類中繼承來的資源 35 作用 實現(xiàn)對象在被清除之前還希望完成某種功能 可將該功能的代碼放在終結(jié)函數(shù)中 運行系統(tǒng)會在對象被清除時自動地調(diào)用它 要點 Java中的函數(shù)的兩種調(diào)用形式1 傳值拷貝調(diào)用 形參為基本類型的數(shù)據(jù)定義時 voidAdd intx inty 2 傳地址的引用調(diào)用 形參為復(fù)合數(shù)據(jù) 數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年安全員考試題庫
- 品牌塑造與管理練習(xí)卷含答案
- 審計復(fù)習(xí)測試卷
- 2025年河北省邢臺市單招職業(yè)傾向性測試題庫及參考答案
- 2025年廣州衛(wèi)生職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫學(xué)生專用
- 輔助作業(yè)合同范本
- 2025年湖北水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫新版
- 2025年上海市建筑安全員知識題庫及答案
- 2025年甘肅省甘南藏族自治州單招職業(yè)適應(yīng)性測試題庫完整
- 區(qū)域發(fā)展的自然環(huán)境基礎(chǔ)導(dǎo)學(xué)案 高中地理人教版(2019)選擇性必修2
- Unit5 What day is it today?(教學(xué)設(shè)計)-2023-2024學(xué)年教科版(廣州)英語四年級下冊
- 法院生活費申請書
- 2025年益陽醫(yī)學(xué)高等??茖W(xué)校高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 醫(yī)用氣體施工方案
- 2024 年陜西公務(wù)員考試行測試題(B 類)
- 【課件】學(xué)校后勤管理工作
- 2025-2030年中國聚丙烯酰胺(PAM)市場發(fā)展狀況及未來投資戰(zhàn)略決策報告新版
- 幼兒園師德師風(fēng)培訓(xùn)內(nèi)容
- 課題申報書:產(chǎn)教融合背景下護理專業(yè)技能人才“崗課賽證”融通路徑研究
- 住宅小區(qū)消防設(shè)施檢查方案
- 《榜樣9》觀后感心得體會四
評論
0/150
提交評論