版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java的面向?qū)ο缶幊?主講人:孫鑫,,面向?qū)ο缶幊谈攀?簡(jiǎn)單的說(shuō),面向?qū)ο缶幊蹋∣bject Oriented Programming,簡(jiǎn)稱OOP)描述的是對(duì)象之間的相互作用。 面向?qū)ο缶幊膛c面向過(guò)程編程的區(qū)別: 過(guò)程化程序設(shè)計(jì)先確定算法,再確定數(shù)據(jù)結(jié)構(gòu);面向?qū)ο缶幊滔却_定數(shù)據(jù)結(jié)構(gòu),再確定運(yùn)算。 面向過(guò)程編程的程序員,習(xí)慣于建立數(shù)據(jù)結(jié)構(gòu)存放數(shù)據(jù)并定義方法(函數(shù))來(lái)操作數(shù)據(jù);面向?qū)ο缶幊痰某绦騿T則構(gòu)造一個(gè)對(duì)象模型,將數(shù)據(jù)與方法組織在一起。,,對(duì)象 對(duì)象的狀態(tài) 對(duì)象的行為,我們可以把現(xiàn)實(shí)世界的事物抽象成對(duì)象。 對(duì)象一
2、般都有兩個(gè)特征:狀態(tài)(state)和行為(behavior)。 軟件的對(duì)象概念是由現(xiàn)實(shí)世界對(duì)象抽象而來(lái) 。把現(xiàn)實(shí)世界對(duì)象的狀態(tài)保存在軟件對(duì)象的變量中;現(xiàn)實(shí)世界對(duì)象的行為通過(guò)軟件對(duì)象的方法(函數(shù))來(lái)實(shí)現(xiàn)。,,類和對(duì)象,把相似的對(duì)象劃歸成一個(gè)類。 在軟件中,類,就是一個(gè)模板,它定義了通用于一個(gè)特定種類的所有對(duì)象的狀態(tài)(變量)和行為(方法)。 類是創(chuàng)建對(duì)象的模板,對(duì)象是類的實(shí)例。,,面向?qū)ο蟪绦蛟O(shè)計(jì),從程序設(shè)計(jì)的角度看,類是面向?qū)ο蟪绦蛑凶罨镜某绦騿卧?。類?shí)質(zhì)上定義的是一種數(shù)據(jù)類型,這種數(shù)據(jù)類型就是對(duì)象類型 。所以我們
3、可以使用類名稱來(lái)聲明對(duì)象變量。 聲明對(duì)象變量之后,還不能使用對(duì)象。必須用運(yùn)算符new創(chuàng)建對(duì)象實(shí)體之后,才能使用對(duì)象。,,面向?qū)ο缶幊痰碾y點(diǎn),掌握面向?qū)ο蟮睦щy之處在于思路的轉(zhuǎn)換。 我們通常習(xí)慣于考慮解決問(wèn)題的方法,而不是考慮將問(wèn)題抽象成對(duì)象再去解決它。,,一個(gè)簡(jiǎn)單的例子,編寫一個(gè)駕駛汽車的方法 面向過(guò)程的程序設(shè)計(jì): 編寫一個(gè)方法,void drivecar(); 面向?qū)ο蟮某绦蛟O(shè)計(jì): 將一輛汽車看成一個(gè)對(duì)象,將所有汽車對(duì)象的共性抽取出來(lái),設(shè)計(jì)一個(gè)類Car,類中有一個(gè)方法void drive(),用Car這個(gè)類實(shí)例化
4、一個(gè)具體的對(duì)象car,調(diào)用:car.drive()。,,類的構(gòu)造方法,構(gòu)造方法的名字和類名相同,并且沒(méi)有返回值。 構(gòu)造方法主要用于為類的對(duì)象定義初始化狀態(tài)。 我們不能直接調(diào)用構(gòu)造方法,必須通過(guò)new關(guān)鍵字來(lái)自動(dòng)調(diào)用,從而創(chuàng)建類的實(shí)例。 Java的類都要求有構(gòu)造方法,如果沒(méi)有定義構(gòu)造方法,Java編譯器會(huì)為我們提供一個(gè)缺省的構(gòu)造方法,也就是不帶參數(shù)的構(gòu)造方法。,,new關(guān)鍵字的作用,為對(duì)象分配內(nèi)存空間。 引起對(duì)象構(gòu)造方法的調(diào)用。 為對(duì)象返回一個(gè)引用。,,缺省構(gòu)造方法,當(dāng)我們用缺
5、省的構(gòu)造方法初始化對(duì)象時(shí),系統(tǒng)用默認(rèn)值初始化對(duì)象的成員變量。 各種數(shù)據(jù)類型的默認(rèn)值為: 數(shù)值型0 booleanfalse char0 對(duì)象null,,方法的重載(overload),重載構(gòu)成的條件:方法的名稱相同,但參數(shù)類型或參數(shù)個(gè)數(shù)不同,才能構(gòu)成方法的重載。,,特殊變量this,this變量代表對(duì)象本身 當(dāng)類中有兩個(gè)同名變量,一個(gè)屬于類(類的成員變量),而另一個(gè)屬于某個(gè)特定的方法(方法中的局部變量),使用this區(qū)分成員變量和局部變量。 使用this簡(jiǎn)化構(gòu)造函數(shù)的調(diào)用。,
6、,特殊變量this,關(guān)于實(shí)例方法和實(shí)例數(shù)據(jù)成員的進(jìn)一步說(shuō)明 一個(gè)類所有的實(shí)例(對(duì)象)調(diào)用的成員方法在內(nèi)存中只有一份拷貝,盡管在內(nèi)存中可能有多個(gè)對(duì)象,而數(shù)據(jù)成員在類的每個(gè)對(duì)象所在內(nèi)存中都存在著一份拷貝。this變量允許相同的實(shí)例方法為不同的對(duì)象工作。每當(dāng)調(diào)用一個(gè)實(shí)例方法時(shí),this變量將被設(shè)置成引用該實(shí)例方法的特定的類對(duì)象。方法的代碼接著會(huì)與this所代表的對(duì)象的特定數(shù)據(jù)建立關(guān)聯(lián)。,,關(guān)鍵字static,靜態(tài)方法和靜態(tài)變量是屬于某一個(gè)類,而不屬于類的對(duì)象。 靜態(tài)方法和靜態(tài)變量的引用直接通過(guò)類名引用。 在靜態(tài)方法中不能調(diào)用非靜態(tài)的方法和引用非靜態(tài)的成員變量。
7、反之,則可以。 可以用類的對(duì)象obj去調(diào)用靜態(tài)的方法method(),如:obj.method()。,,常量的定義,使用關(guān)鍵字final定義常量,例如: final double PI=3.1415926; 作為一種約定,在定義常量時(shí),通常采用大寫形式。 final常量可以在聲明的同時(shí)賦初值,也可以在構(gòu)造函數(shù)中賦初值。 為了節(jié)省內(nèi)存,我們通常將常量聲明為靜態(tài)的(static)。,,類的繼承,理解繼承是理解面向?qū)ο蟪绦蛟O(shè)計(jì)的關(guān)鍵。 在Java中,通過(guò)關(guān)鍵字extends繼承一個(gè)已有的類,被繼承的類稱為父類(超類,基類
8、),新的類稱為子類(派生類)。 在Java中,不允許多繼承。,,方法的覆蓋(override),在子類中定義一個(gè)與父類同名、返回類型、參數(shù)類型均相同一個(gè)方法,稱為方法的覆蓋。 覆蓋發(fā)生在子類與父類之間。,,特殊變量super,特殊變量super,提供了對(duì)父類的訪問(wèn)。 可以使用super訪問(wèn)父類被子類隱藏的變量或覆蓋的方法。 每個(gè)子類構(gòu)造方法的第一條語(yǔ)句,都是隱含地調(diào)用super(),如果父類沒(méi)有這種形式的構(gòu)造函數(shù),那么在編譯的時(shí)候就會(huì)報(bào)錯(cuò)。,,多態(tài)性,通過(guò)覆蓋父類的方法來(lái)實(shí)現(xiàn)
9、,在運(yùn)行時(shí)根據(jù)傳遞的對(duì)象引用,來(lái)調(diào)用相應(yīng)的方法。,,面向?qū)ο蟮某绦蛟O(shè)計(jì),問(wèn)題:求一個(gè)長(zhǎng)方形的周長(zhǎng)和面積。 以面向過(guò)程的程序設(shè)計(jì)方式思考: 1、確定長(zhǎng)方形周長(zhǎng)和面積的算法。 2、編寫兩個(gè)方法(函數(shù))分別計(jì)算長(zhǎng)方形的周長(zhǎng)和面積。 3、求周長(zhǎng)的方法(函數(shù))和求面積的方法(函數(shù))需要兩個(gè)參數(shù),分別是長(zhǎng)方形的長(zhǎng)和寬。,,面向過(guò)程的程序設(shè)計(jì)代碼: class Rectangle static int perimeter(int length,int width) return 2*(length+width); static int area(int length,int width) return length*width; public static void main(String args) System.out.println(perimeter = “ + Rectangle.perimeter(5,4); System.out.println(area = “ + Rectangle.area(5,4); ,,面向?qū)ο蟮某绦蛟O(shè)計(jì),問(wèn)題:求一個(gè)長(zhǎng)方形的周長(zhǎng)和面積。 以面向?qū)ο蟮某绦蛟O(shè)計(jì)方式思考: 1、一個(gè)長(zhǎng)方形可以看成一個(gè)長(zhǎng)方形對(duì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年GMAT閱讀理解及寫作模擬題
- 2026年旅游管理研究旅游規(guī)劃與目的地管理題庫(kù)
- 2026年法律職業(yè)資格考試法條應(yīng)用分析題
- 2026年四川城市職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試備考題庫(kù)含詳細(xì)答案解析
- 2026年甘肅省蘭州新區(qū)城市礦產(chǎn)循環(huán)產(chǎn)業(yè)發(fā)展有限公司公共服務(wù)平臺(tái)酒店項(xiàng)目招聘17人備考考試題庫(kù)及答案解析
- 2026年四川電子機(jī)械職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試備考試題含詳細(xì)答案解析
- 2026年麗水職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題及答案詳細(xì)解析
- 2026年青海交通職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試模擬試題含詳細(xì)答案解析
- 2026年錫林郭勒職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試模擬試題含詳細(xì)答案解析
- 2026年廣州民航職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試參考題庫(kù)含詳細(xì)答案解析
- (一模)2025~2026學(xué)年佛山市高三教學(xué)質(zhì)量檢測(cè)(一)政治試卷(含答案)
- 食材采購(gòu)配送投標(biāo)方案(技術(shù)方案)
- 車輛駕駛?cè)私逃嘤?xùn)制度
- 中國(guó)話語(yǔ)體系構(gòu)建的全球傳播效果課題申報(bào)書
- 2026廣東東莞市厚街鎮(zhèn)第一次招聘編外聘用人員12人考試備考試題及答案解析
- 學(xué)堂在線 雨課堂 學(xué)堂云 極區(qū)航海導(dǎo)航保障 期末考試答案
- 民爆物品倉(cāng)庫(kù)安全操作規(guī)程
- von frey絲K值表完整版
- 勾股定理復(fù)習(xí)導(dǎo)學(xué)案
- 第二章單自由度系統(tǒng)振動(dòng)
- GB/T 17880.6-1999鉚螺母技術(shù)條件
評(píng)論
0/150
提交評(píng)論