Java課件第六講Java面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第1頁(yè)
Java課件第六講Java面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第2頁(yè)
Java課件第六講Java面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第3頁(yè)
Java課件第六講Java面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第4頁(yè)
Java課件第六講Java面向?qū)ο蟪绦蛟O(shè)計(jì).ppt_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6講Java面向?qū)ο蟪绦蛟O(shè)計(jì),面向?qū)ο蟮某绦蛟O(shè)計(jì)方法按照現(xiàn)實(shí)世界的特點(diǎn),把復(fù)雜的事務(wù)抽象為對(duì)象。對(duì)象具有自己的狀態(tài)和行為,通過(guò)對(duì)消息的反應(yīng)來(lái)完成一定的任務(wù)。面向?qū)ο笫荍ava的重要特性。,一、Java面向?qū)ο蠡A(chǔ),(一)類(lèi)的定義,Java的類(lèi)是由類(lèi)聲明和類(lèi)體二部分構(gòu)成,類(lèi)聲明定義的格式如下:類(lèi)修飾符class類(lèi)名extends父類(lèi)名implements接口名,接口名類(lèi)體,例:HelloWorldApp.javapublicclassHelloWorldApppublicstaticvoidmain(Stringargs)System.out.println(“HelloWorld!”);,類(lèi)體定義的格式:class類(lèi)名變量聲明;方法聲明;,例: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;,組成一個(gè)類(lèi)的組件如下:,import包類(lèi)修飾符classxxxclassextends父類(lèi)implements接口/類(lèi)變量或稱類(lèi)字段/實(shí)例變量或稱實(shí)例字段/構(gòu)造函數(shù)/靜態(tài)初始者/類(lèi)方法/實(shí)例方法/內(nèi)部類(lèi),(二)類(lèi)的修飾符,public提供給其他類(lèi)完全的存取權(quán)限。即:在同一包中的類(lèi)可自由取用此類(lèi),而別的包中的類(lèi)可通過(guò)import關(guān)鍵詞來(lái)引入此類(lèi)所屬的包加以運(yùn)用。,用public修飾的類(lèi)有幾個(gè)特性:1.一個(gè)程序里只能有一個(gè)類(lèi)被修飾為public,否則編譯會(huì)錯(cuò)。publicclassxxxClass()classaaaClass()classbbbClass()2.源文件存儲(chǔ)文件名,必須是用public修飾的類(lèi)名(xxxClass)3.若程序中沒(méi)有任何public類(lèi),則文件名可任取。而如果文件名是程序中的一個(gè)類(lèi)名,則該類(lèi)被視作public,可供別的類(lèi)存取。,final表示此類(lèi)為“最終”類(lèi),別的類(lèi)不能繼承此類(lèi),其方法也不能被覆蓋。例如java.lang.System類(lèi)即為final類(lèi):publicfinalclassSystemextendsObject注意:我們可使用該類(lèi),但不能繼承并覆蓋其內(nèi)容。用重復(fù)的兩個(gè)修飾符public+final的意思是:此final類(lèi)可被import來(lái)引用,但不能被繼承。System類(lèi)關(guān)系到系統(tǒng)層級(jí)控制,為了安全性,故必須為final類(lèi),以避免被覆蓋。但final與abstract就不能復(fù)合來(lái)用,因?yàn)槎呤窍鄾_突的。,另外:final關(guān)鍵字也可用于修飾方法和變量,用final修飾的方法不能被覆蓋,用final修飾的變量定義的同時(shí)必須賦初值且在程序中不能被賦值,final變量被認(rèn)為是符號(hào)常量,習(xí)慣上用大寫(xiě)字母表示這些變量。,例: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í)際的”。此修飾符可修飾類(lèi)及方法。用abstract修飾的類(lèi)只是先定義一些方法規(guī)格,然后讓繼承此類(lèi)的子類(lèi)來(lái)覆蓋此規(guī)格的內(nèi)容。即:抽象類(lèi)不需給出類(lèi)中每個(gè)方法的完整實(shí)現(xiàn),要實(shí)現(xiàn)此方法必須要由子類(lèi)的方法來(lái)覆蓋。,abstract類(lèi)與方法有下列特性:1.一個(gè)抽象類(lèi)里可以沒(méi)有定義抽象方法。但只要類(lèi)中有一個(gè)方法是被聲明為abstract,則該類(lèi)必須為abstract。2.抽象類(lèi)不能被實(shí)例化,即不能被new成一個(gè)對(duì)象實(shí)例。3.若一個(gè)子類(lèi)繼承一個(gè)抽象類(lèi),則子類(lèi)需用覆蓋的方式來(lái)實(shí)化該抽象父類(lèi)中的抽象方法。若沒(méi)有完全實(shí)化所有的抽象方法,則子類(lèi)仍是抽象的。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();,例:抽象類(lèi)示例,默認(rèn)修飾符如果一個(gè)類(lèi)沒(méi)有修飾符,就說(shuō)明它具有默認(rèn)的訪問(wèn)控制特性。這樣的類(lèi)只允許與該類(lèi)處于同一個(gè)包中的類(lèi)訪問(wèn)和調(diào)用,而不允許被其他包中的類(lèi)使用。注意:Java中,外部類(lèi)不能用private和protected修飾,內(nèi)部類(lèi)可以用private和protected修飾。,二、對(duì)象的創(chuàng)建和引用,(一)對(duì)象的定義,定義了用戶自己的類(lèi)之后,就可以用這個(gè)類(lèi)去定義類(lèi)的對(duì)象了。如:BoxmyBox;因?yàn)轭?lèi)可以當(dāng)作是用戶自行聲明的復(fù)合數(shù)據(jù)類(lèi)型,所以使用之前還需用new為其開(kāi)辟存儲(chǔ)空間。如:myBox=newBox();注:以上兩步可合而為一BoxmyBox=newBox();接下來(lái),可以利用成員運(yùn)算符“.”來(lái)訪問(wèn)對(duì)象的各個(gè)成員變量。如:myBox.color=“Blue”;myBox.width=10.5;,總結(jié):,對(duì)象的創(chuàng)建包括“聲明”、“實(shí)例化”、“初始化”三步:聲明:類(lèi)型對(duì)象名;實(shí)例化:用new可以為一個(gè)類(lèi)實(shí)例化多個(gè)不同的對(duì)象,這些對(duì)象分別占用不同的內(nèi)存空間。初始化:執(zhí)行構(gòu)造函數(shù)。,(二)對(duì)象成員變量的引用引用格式:對(duì)象名.成員變量名,(三)對(duì)象方法的調(diào)用調(diào)用格式:對(duì)象名.方法名,例: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中的變量,三、成員變量,成員變量是類(lèi)的兩大組成部分之一,因此類(lèi)體中定義的變量都稱之為成員變量,而方法體中定義的變量不能稱之為成員變量。類(lèi)變量(由static修飾)成員變量實(shí)例變量(沒(méi)有static修飾),(一)成員變量的定義,格式:變量修飾符類(lèi)型變量名=初值,變量名=初值;如:publicinta,b=12;protectedStrings=HotJava;,注意:若成員變量在定義時(shí)沒(méi)有賦初值,則系統(tǒng)會(huì)為其自動(dòng)進(jìn)行初始化,但方法中的自動(dòng)變量必須人為的賦初值。,(二)成員變量修飾符,1.存取性修飾符:控制類(lèi)間的存取,包括public,protected,private;2.存在性修飾符:成員變量本身在類(lèi)中存在的特性,包括static和final。,public修飾符public變量和方法是“公開(kāi)”的,既允許變量自身所屬的類(lèi)訪問(wèn),也允許同一個(gè)包中的其他類(lèi)訪問(wèn),還允許其他包中的類(lèi)訪問(wèn)。protected修飾符protected變量和方法是“受保護(hù)”的,它們僅能被與該類(lèi)處于同一個(gè)包中的類(lèi)所直接存取和使用。private修飾符private變量和方法是“私有的”,除了聲明它們的類(lèi)外,不能被任何其他的類(lèi)直接存取和使用。注:當(dāng)變量和方法前不加以上三種修飾符時(shí),被認(rèn)為是默認(rèn)訪問(wèn)級(jí),只允許定義它的類(lèi)自身以及在同一個(gè)包中的類(lèi)訪問(wèn)和調(diào)用。,static修飾符用關(guān)鍵字static可以修飾類(lèi)的成員變量及方法,使它們成為靜態(tài)成員。如:staticinty=3;staticshowx()注意:用static修飾的變量稱為類(lèi)變量,用static修飾的方法稱為類(lèi)方法。類(lèi)變量和類(lèi)方法在使用時(shí)也和其他變量與方法不同。,例:,UseStatic.javaUseGeneral.javaStaticTest.java,final修飾符將變量或方法聲明為final,可以保證他們?cè)谑褂弥胁槐桓淖?。注意:被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改;被聲明為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ù))是類(lèi)的兩大組成部分,成員變量反映了類(lèi)的性質(zhì),而方法(函數(shù))反映了類(lèi)的行為。,(一)成員方法的聲明,聲明格式:方法修飾符返回值類(lèi)型方法名(參數(shù)表)方法體說(shuō)明:定義方法時(shí)一定要給出返回值類(lèi)型和參數(shù)表;沒(méi)有返回值時(shí),返回值類(lèi)型記為void。如:publicstaticvoidmain(Stringargs)publicintarea(intlength,intwidth)returnlength,*width;,(二)成員方法修飾符,方法修飾符大部分的種類(lèi)及意義與變量修飾符一樣,不過(guò)多了一種存在性的abstract以及線程用的運(yùn)作性修飾符synchronized。存取性:public,protected,private存在性:static,abstract,final運(yùn)作性:synchronized,1.static修飾符此修飾符會(huì)使方法成為唯一的。與類(lèi)的地位等同。不會(huì)因?qū)嵗漠a(chǎn)生而受影響。static方法在使用上,有幾點(diǎn)注意事項(xiàng):(1)static方法中只能使用static變量,否則編譯會(huì)出錯(cuò)。(2)一個(gè)類(lèi)的static變量和static方法,可直接用該類(lèi)的名稱,按以下方法來(lái)使用:類(lèi)名.類(lèi)方法類(lèi)名.類(lèi)變量類(lèi)名.靜態(tài)變量.靜態(tài)方法,2.abstract修飾符抽象方法存在于抽象類(lèi)中,并不建立程序代碼,而是留給繼承的子類(lèi)來(lái)覆蓋。被聲明為abstract的方法不需要實(shí)際的方法體,只需給出方法的名稱、返回值類(lèi)型和參數(shù)表。格式:abstract返回值類(lèi)型方法名(參數(shù)表);注:聲明抽象方法時(shí),并不用寫(xiě)出大括號(hào)。定義了abstract抽象方法的類(lèi)必須被聲明為abstract的抽象類(lèi)。3.final修飾符被聲明為final的方法不能被其他類(lèi)變更方法里的內(nèi)容,即使是繼承的子類(lèi)。,4.synchronized修飾符此方法修飾符用于同步化監(jiān)控處理。被synchronized修飾的方法,一次只能被一個(gè)線程來(lái)使用。,(三)成員方法調(diào)用,1.簡(jiǎn)單調(diào)用:根據(jù)被調(diào)用的方法是否有返回值,有兩種調(diào)用形式。(1)作為一條單獨(dú)的語(yǔ)句(void)如:System.out.println(“”);(2)作為一個(gè)表達(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)用的方法有可能是在本身這個(gè)類(lèi)中,也有可能是在父類(lèi)或其他的類(lèi)中。(2)被調(diào)用的方法有可能是類(lèi)方法,也有可能是實(shí)例方法。(3)主調(diào)方法有可能是類(lèi)方法,也有可能是實(shí)例方法。方法調(diào)用的寫(xiě)法就要根據(jù)方法所在的位置及它本身的性質(zhì)來(lái)進(jìn)行調(diào)用。,上表的原則:,1.this與super不能用在由static修飾的類(lèi)方法里。若放在其中,則會(huì)產(chǎn)生編譯錯(cuò)誤信息:non-staticvariablethiscannotbereferencedfromastaticcontextnon-staticvariablesupercannotbereferencedfromastaticcontext2.在類(lèi)方法中可直接調(diào)用本身類(lèi)方法,但不可直接調(diào)用實(shí)例方法。3.在實(shí)例方法中可直接調(diào)用本身類(lèi)中的類(lèi)方法與實(shí)例方法。4.this與super只能用在實(shí)例方法中。5.xx對(duì)象.xx方法的方式可用于任何情況里。,例:TestMethod.java,(四)成員方法參數(shù)的傳遞,參數(shù)可以是基本數(shù)據(jù)類(lèi)型、數(shù)組和對(duì)象。,例: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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論