




已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6講Java面向?qū)ο蟪绦蛟O(shè)計(jì),面向?qū)ο蟮某绦蛟O(shè)計(jì)方法按照現(xiàn)實(shí)世界的特點(diǎn),把復(fù)雜的事務(wù)抽象為對象。對象具有自己的狀態(tài)和行為,通過對消息的反應(yīng)來完成一定的任務(wù)。面向?qū)ο笫荍ava的重要特性。,一、Java面向?qū)ο蠡A(chǔ),(一)類的定義,Java的類是由類聲明和類體二部分構(gòu)成,類聲明定義的格式如下:類修飾符class類名extends父類名implements接口名,接口名類體,例:HelloWorldApp.javapublicclassHelloWorldApppublicstaticvoidmain(Stringargs)System.out.println(“HelloWorld!”);,類體定義的格式:class類名變量聲明;方法聲明;,例:classPointintx,y;voidinit(intix,intiy)x=ix;y=iy;,例:,publicclassCalculatorprivatedoubleresult;publicdoublea,b;publicdoubleCalculator()result=0;publicdoubleAdd()result=a+b;returnresult;publicdoubleMinus()result=a-b;returnresult;,組成一個類的組件如下:,import包類修飾符classxxxclassextends父類implements接口/類變量或稱類字段/實(shí)例變量或稱實(shí)例字段/構(gòu)造函數(shù)/靜態(tài)初始者/類方法/實(shí)例方法/內(nèi)部類,(二)類的修飾符,public提供給其他類完全的存取權(quán)限。即:在同一包中的類可自由取用此類,而別的包中的類可通過import關(guān)鍵詞來引入此類所屬的包加以運(yùn)用。,用public修飾的類有幾個特性:1.一個程序里只能有一個類被修飾為public,否則編譯會錯。publicclassxxxClass()classaaaClass()classbbbClass()2.源文件存儲文件名,必須是用public修飾的類名(xxxClass)3.若程序中沒有任何public類,則文件名可任取。而如果文件名是程序中的一個類名,則該類被視作public,可供別的類存取。,final表示此類為“最終”類,別的類不能繼承此類,其方法也不能被覆蓋。例如java.lang.System類即為final類:publicfinalclassSystemextendsObject注意:我們可使用該類,但不能繼承并覆蓋其內(nèi)容。用重復(fù)的兩個修飾符public+final的意思是:此final類可被import來引用,但不能被繼承。System類關(guān)系到系統(tǒng)層級控制,為了安全性,故必須為final類,以避免被覆蓋。但final與abstract就不能復(fù)合來用,因?yàn)槎呤窍鄾_突的。,另外:final關(guān)鍵字也可用于修飾方法和變量,用final修飾的方法不能被覆蓋,用final修飾的變量定義的同時必須賦初值且在程序中不能被賦值,final變量被認(rèn)為是符號常量,習(xí)慣上用大寫字母表示這些變量。,例:FinalTest.java,finalclassAfinaldoublePI=3.1416;finaldoublearea(doubler)return(PI*r*r);classFinalTestpublicstaticvoidmain(Stringargs)Aa=newA();System.out.println(area=+a.area(5.0);,abstract此字的英文意思是”抽象的”,”非實(shí)際的”。此修飾符可修飾類及方法。用abstract修飾的類只是先定義一些方法規(guī)格,然后讓繼承此類的子類來覆蓋此規(guī)格的內(nèi)容。即:抽象類不需給出類中每個方法的完整實(shí)現(xiàn),要實(shí)現(xiàn)此方法必須要由子類的方法來覆蓋。,abstract類與方法有下列特性:1.一個抽象類里可以沒有定義抽象方法。但只要類中有一個方法是被聲明為abstract,則該類必須為abstract。2.抽象類不能被實(shí)例化,即不能被new成一個對象實(shí)例。3.若一個子類繼承一個抽象類,則子類需用覆蓋的方式來實(shí)化該抽象父類中的抽象方法。若沒有完全實(shí)化所有的抽象方法,則子類仍是抽象的。4.抽象方法可再與public、protected復(fù)合使用,但不能與final、private和static復(fù)合使用。,例:Abstract_Demo.java,abstractclassAabstractvoidcallme();voidmetoo()System.out.println(在A的metoo方法里);classBextendsAvoidcallme()System.out.println(在B的callme方法里);,classAbstract_Demopublicstaticvoidmain(Stringargs)Ba=newB();a.callme();a.metoo();,例:抽象類示例,默認(rèn)修飾符如果一個類沒有修飾符,就說明它具有默認(rèn)的訪問控制特性。這樣的類只允許與該類處于同一個包中的類訪問和調(diào)用,而不允許被其他包中的類使用。注意:Java中,外部類不能用private和protected修飾,內(nèi)部類可以用private和protected修飾。,二、對象的創(chuàng)建和引用,(一)對象的定義,定義了用戶自己的類之后,就可以用這個類去定義類的對象了。如:BoxmyBox;因?yàn)轭惪梢援?dāng)作是用戶自行聲明的復(fù)合數(shù)據(jù)類型,所以使用之前還需用new為其開辟存儲空間。如:myBox=newBox();注:以上兩步可合而為一BoxmyBox=newBox();接下來,可以利用成員運(yùn)算符“.”來訪問對象的各個成員變量。如:myBox.color=“Blue”;myBox.width=10.5;,總結(jié):,對象的創(chuàng)建包括“聲明”、“實(shí)例化”、“初始化”三步:聲明:類型對象名;實(shí)例化:用new可以為一個類實(shí)例化多個不同的對象,這些對象分別占用不同的內(nèi)存空間。初始化:執(zhí)行構(gòu)造函數(shù)。,(二)對象成員變量的引用引用格式:對象名.成員變量名,(三)對象方法的調(diào)用調(diào)用格式:對象名.方法名,例:BoxClass.java,classBoxStringcolor;doublewidth;doubleheight;doubledepth;doublevolume()returnwidth*height*depth;voidBoxMessage()System.out.println(盒子的顏色:+color);System.out.println(盒子的寬度:+width);,System.out.println(盒子的高度:+height);System.out.println(盒子的深度:+depth);publicclassBoxClasspublicstaticvoidmain(Stringargs)BoxmyBox=newBox();doublemyBoxVolume,Volume;myBox.color=Blue;myBox.width=10.5;myBox.height=20.6;myBox.depth=15.7;,myBoxVolume=myBox.volume();Volume=myBox.width*myBox.height*myBox.depth;System.out.println(體積是:+myBoxVolume);System.out.println(體積是:+Volume);myBox.BoxMessage();,Java中的變量,三、成員變量,成員變量是類的兩大組成部分之一,因此類體中定義的變量都稱之為成員變量,而方法體中定義的變量不能稱之為成員變量。類變量(由static修飾)成員變量實(shí)例變量(沒有static修飾),(一)成員變量的定義,格式:變量修飾符類型變量名=初值,變量名=初值;如:publicinta,b=12;protectedStrings=HotJava;,注意:若成員變量在定義時沒有賦初值,則系統(tǒng)會為其自動進(jìn)行初始化,但方法中的自動變量必須人為的賦初值。,(二)成員變量修飾符,1.存取性修飾符:控制類間的存取,包括public,protected,private;2.存在性修飾符:成員變量本身在類中存在的特性,包括static和final。,public修飾符public變量和方法是“公開”的,既允許變量自身所屬的類訪問,也允許同一個包中的其他類訪問,還允許其他包中的類訪問。protected修飾符protected變量和方法是“受保護(hù)”的,它們僅能被與該類處于同一個包中的類所直接存取和使用。private修飾符private變量和方法是“私有的”,除了聲明它們的類外,不能被任何其他的類直接存取和使用。注:當(dāng)變量和方法前不加以上三種修飾符時,被認(rèn)為是默認(rèn)訪問級,只允許定義它的類自身以及在同一個包中的類訪問和調(diào)用。,static修飾符用關(guān)鍵字static可以修飾類的成員變量及方法,使它們成為靜態(tài)成員。如:staticinty=3;staticshowx()注意:用static修飾的變量稱為類變量,用static修飾的方法稱為類方法。類變量和類方法在使用時也和其他變量與方法不同。,例:,UseStatic.javaUseGeneral.javaStaticTest.java,final修飾符將變量或方法聲明為final,可以保證他們在使用中不被改變。注意:被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改;被聲明為final的方法也同樣只能使用,不能重載或覆蓋。,例:FinalTest.java,finalclassAfinaldoublePI=3.1416;finaldoublearea(doubler)return(PI*r*r);classFinalTestpublicstaticvoidmain(Stringargs)Aa=newA();System.out.println(area=+a.area(5.0);,四、成員方法(成員函數(shù)),在Java中,成員變量和成員方法(成員函數(shù))是類的兩大組成部分,成員變量反映了類的性質(zhì),而方法(函數(shù))反映了類的行為。,(一)成員方法的聲明,聲明格式:方法修飾符返回值類型方法名(參數(shù)表)方法體說明:定義方法時一定要給出返回值類型和參數(shù)表;沒有返回值時,返回值類型記為void。如:publicstaticvoidmain(Stringargs)publicintarea(intlength,intwidth)returnlength,*width;,(二)成員方法修飾符,方法修飾符大部分的種類及意義與變量修飾符一樣,不過多了一種存在性的abstract以及線程用的運(yùn)作性修飾符synchronized。存取性:public,protected,private存在性:static,abstract,final運(yùn)作性:synchronized,1.static修飾符此修飾符會使方法成為唯一的。與類的地位等同。不會因?qū)嵗漠a(chǎn)生而受影響。static方法在使用上,有幾點(diǎn)注意事項(xiàng):(1)static方法中只能使用static變量,否則編譯會出錯。(2)一個類的static變量和static方法,可直接用該類的名稱,按以下方法來使用:類名.類方法類名.類變量類名.靜態(tài)變量.靜態(tài)方法,2.abstract修飾符抽象方法存在于抽象類中,并不建立程序代碼,而是留給繼承的子類來覆蓋。被聲明為abstract的方法不需要實(shí)際的方法體,只需給出方法的名稱、返回值類型和參數(shù)表。格式:abstract返回值類型方法名(參數(shù)表);注:聲明抽象方法時,并不用寫出大括號。定義了abstract抽象方法的類必須被聲明為abstract的抽象類。3.final修飾符被聲明為final的方法不能被其他類變更方法里的內(nèi)容,即使是繼承的子類。,4.synchronized修飾符此方法修飾符用于同步化監(jiān)控處理。被synchronized修飾的方法,一次只能被一個線程來使用。,(三)成員方法調(diào)用,1.簡單調(diào)用:根據(jù)被調(diào)用的方法是否有返回值,有兩種調(diào)用形式。(1)作為一條單獨(dú)的語句(void)如:System.out.println(“”);(2)作為一個表達(dá)式(有返回值)如:s=area(3,4);,例:SquareDouble.java,publicclassSquareDoublepublicstaticvoidmain(Stringarg)doublea=10.0,x=0.0;x=square(a);System.out.println(“正方形面積是:”+x);publicstaticdoublesquare(doubley)returny*y;,2.根據(jù)調(diào)用方法的所在位置及其本身的性質(zhì),又分為幾種不同情況。,(1)被調(diào)用的方法有可能是在本身這個類中,也有可能是在父類或其他的類中。(2)被調(diào)用的方法有可能是類方法,也有可能是實(shí)例方法。(3)主調(diào)方法有可能是類方法,也有可能是實(shí)例方法。方法調(diào)用的寫法就要根據(jù)方法所在的位置及它本身的性質(zhì)來進(jìn)行調(diào)用。,上表的原則:,1.this與super不能用在由static修飾的類方法里。若放在其中,則會產(chǎn)生編譯錯誤信息:non-staticvariablethiscannotbereferencedfromastaticcontextnon-staticvariablesupercannotbereferencedfromastaticcontext2.在類方法中可直接調(diào)用本身類方法,但不可直接調(diào)用實(shí)例方法。3.在實(shí)例方法中可直接調(diào)用本身類中的類方法與實(shí)例方法。4.this與super只能用在實(shí)例方法中。5.xx對象.xx方法的方式可用于任何情況里。,例:TestMethod.java,(四)成員方法參數(shù)的傳遞,參數(shù)可以是基本數(shù)據(jù)類型、數(shù)組和對象。,例:ArrayMaxMin.java(參數(shù)是數(shù)組),importjava.applet.Applet;importjava.awt.Graphics;publicclassArrayMaxMinextendsAppletpublicvoidpaint(Graphicsg)doubleMax,Min;doubledata=0.2,5.6,7.88,20.3,-0.234,3.22;Max=ArrayMax(data);g.drawString(Max=+Max,10,20);Min=ArrayMin(data);g.drawString(Min=+Min,10,40);,doubleArrayMax(doublearray)doublemax=array0;for(inti=1;imax)max=arrayi;retur
溫馨提示
- 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-2030中國棕櫚油行業(yè)供需態(tài)勢與競爭格局分析報告
- 2025-2030中國映前廣告行業(yè)發(fā)展策略及運(yùn)營效益預(yù)測報告
- 量子計(jì)算云平臺探索-洞察闡釋
- 極端天氣預(yù)警系統(tǒng)-第3篇-洞察及研究
- 滾動軸承材料耐久性與疲勞損傷機(jī)制研究-洞察闡釋
- 工業(yè)機(jī)器人在制造業(yè)中的應(yīng)用研究-洞察闡釋
- 生物合成生物學(xué)安全評估與應(yīng)用前景研究-洞察闡釋
- 深度學(xué)習(xí)驅(qū)動醫(yī)學(xué)影像拼接技術(shù)-洞察闡釋
- GB/T 45735-2025航空航天用1 100 MPa大六角頭MJ螺紋螺栓
- 員工招聘及管理制度
- 2025年湖北高考真題化學(xué)試題(解析版)
- 2025年廣西公需科目答案03
- 2025年人教版七年級下冊生物期末檢測試卷及答案
- 自然辯證法論述題146題帶答案(可打印版)
- 2024年貴州省貴陽市中考生物試題(含答案逐題解析)
- 廉潔應(yīng)征承諾書
- 醫(yī)院培訓(xùn)課件:《發(fā)熱伴血小板減少綜合征醫(yī)院感染防控》
- 智能門鎖采購?fù)稑?biāo)方案
- 餐廳小票打印模板72790
- 220kV升壓站電氣設(shè)備調(diào)試方案.
- 電磁式振動臺的設(shè)計(jì)
評論
0/150
提交評論