




已閱讀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ǔ),(一)類的定義,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;,組成一個(gè)類的組件如下:,import包類修飾符classxxxclassextends父類implements接口/類變量或稱類字段/實(shí)例變量或稱實(shí)例字段/構(gòu)造函數(shù)/靜態(tài)初始者/類方法/實(shí)例方法/內(nèi)部類,(二)類的修飾符,public提供給其他類完全的存取權(quán)限。即:在同一包中的類可自由取用此類,而別的包中的類可通過(guò)import關(guān)鍵詞來(lái)引入此類所屬的包加以運(yùn)用。,用public修飾的類有幾個(gè)特性:1.一個(gè)程序里只能有一個(gè)類被修飾為public,否則編譯會(huì)錯(cuò)。publicclassxxxClass()classaaaClass()classbbbClass()2.源文件存儲(chǔ)文件名,必須是用public修飾的類名(xxxClass)3.若程序中沒(méi)有任何public類,則文件名可任取。而如果文件名是程序中的一個(gè)類名,則該類被視作public,可供別的類存取。,final表示此類為“最終”類,別的類不能繼承此類,其方法也不能被覆蓋。例如java.lang.System類即為final類:publicfinalclassSystemextendsObject注意:我們可使用該類,但不能繼承并覆蓋其內(nèi)容。用重復(fù)的兩個(gè)修飾符public+final的意思是:此final類可被import來(lái)引用,但不能被繼承。System類關(guān)系到系統(tǒng)層級(jí)控制,為了安全性,故必須為final類,以避免被覆蓋。但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í)際的”。此修飾符可修飾類及方法。用abstract修飾的類只是先定義一些方法規(guī)格,然后讓繼承此類的子類來(lái)覆蓋此規(guī)格的內(nèi)容。即:抽象類不需給出類中每個(gè)方法的完整實(shí)現(xiàn),要實(shí)現(xiàn)此方法必須要由子類的方法來(lái)覆蓋。,abstract類與方法有下列特性:1.一個(gè)抽象類里可以沒(méi)有定義抽象方法。但只要類中有一個(gè)方法是被聲明為abstract,則該類必須為abstract。2.抽象類不能被實(shí)例化,即不能被new成一個(gè)對(duì)象實(shí)例。3.若一個(gè)子類繼承一個(gè)抽象類,則子類需用覆蓋的方式來(lái)實(shí)化該抽象父類中的抽象方法。若沒(méi)有完全實(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)修飾符如果一個(gè)類沒(méi)有修飾符,就說(shuō)明它具有默認(rèn)的訪問(wèn)控制特性。這樣的類只允許與該類處于同一個(gè)包中的類訪問(wèn)和調(diào)用,而不允許被其他包中的類使用。注意:Java中,外部類不能用private和protected修飾,內(nèi)部類可以用private和protected修飾。,二、對(duì)象的創(chuàng)建和引用,(一)對(duì)象的定義,定義了用戶自己的類之后,就可以用這個(gè)類去定義類的對(duì)象了。如:BoxmyBox;因?yàn)轭惪梢援?dāng)作是用戶自行聲明的復(fù)合數(shù)據(jù)類型,所以使用之前還需用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í)例化”、“初始化”三步:聲明:類型對(duì)象名;實(shí)例化:用new可以為一個(gè)類實(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中的變量,三、成員變量,成員變量是類的兩大組成部分之一,因此類體中定義的變量都稱之為成員變量,而方法體中定義的變量不能稱之為成員變量。類變量(由static修飾)成員變量實(shí)例變量(沒(méi)有static修飾),(一)成員變量的定義,格式:變量修飾符類型變量名=初值,變量名=初值;如:publicinta,b=12;protectedStrings=HotJava;,注意:若成員變量在定義時(shí)沒(méi)有賦初值,則系統(tǒng)會(huì)為其自動(dòng)進(jìn)行初始化,但方法中的自動(dòng)變量必須人為的賦初值。,(二)成員變量修飾符,1.存取性修飾符:控制類間的存取,包括public,protected,private;2.存在性修飾符:成員變量本身在類中存在的特性,包括static和final。,public修飾符public變量和方法是“公開(kāi)”的,既允許變量自身所屬的類訪問(wèn),也允許同一個(gè)包中的其他類訪問(wèn),還允許其他包中的類訪問(wèn)。protected修飾符protected變量和方法是“受保護(hù)”的,它們僅能被與該類處于同一個(gè)包中的類所直接存取和使用。private修飾符private變量和方法是“私有的”,除了聲明它們的類外,不能被任何其他的類直接存取和使用。注:當(dāng)變量和方法前不加以上三種修飾符時(shí),被認(rèn)為是默認(rèn)訪問(wèn)級(jí),只允許定義它的類自身以及在同一個(gè)包中的類訪問(wèn)和調(diào)用。,static修飾符用關(guān)鍵字static可以修飾類的成員變量及方法,使它們成為靜態(tài)成員。如:staticinty=3;staticshowx()注意:用static修飾的變量稱為類變量,用static修飾的方法稱為類方法。類變量和類方法在使用時(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ù))是類的兩大組成部分,成員變量反映了類的性質(zhì),而方法(函數(shù))反映了類的行為。,(一)成員方法的聲明,聲明格式:方法修飾符返回值類型方法名(參數(shù)表)方法體說(shuō)明:定義方法時(shí)一定要給出返回值類型和參數(shù)表;沒(méi)有返回值時(shí),返回值類型記為void。如:publicstaticvoidmain(Stringargs)publicintarea(intlength,intwidth)returnlength,*width;,(二)成員方法修飾符,方法修飾符大部分的種類及意義與變量修飾符一樣,不過(guò)多了一種存在性的abstract以及線程用的運(yùn)作性修飾符synchronized。存取性:public,protected,private存在性:static,abstract,final運(yùn)作性:synchronized,1.static修飾符此修飾符會(huì)使方法成為唯一的。與類的地位等同。不會(huì)因?qū)嵗漠a(chǎn)生而受影響。static方法在使用上,有幾點(diǎn)注意事項(xiàng):(1)static方法中只能使用static變量,否則編譯會(huì)出錯(cuò)。(2)一個(gè)類的static變量和static方法,可直接用該類的名稱,按以下方法來(lái)使用:類名.類方法類名.類變量類名.靜態(tài)變量.靜態(tài)方法,2.abstract修飾符抽象方法存在于抽象類中,并不建立程序代碼,而是留給繼承的子類來(lái)覆蓋。被聲明為abstract的方法不需要實(shí)際的方法體,只需給出方法的名稱、返回值類型和參數(shù)表。格式:abstract返回值類型方法名(參數(shù)表);注:聲明抽象方法時(shí),并不用寫(xiě)出大括號(hào)。定義了abstract抽象方法的類必須被聲明為abstract的抽象類。3.final修飾符被聲明為final的方法不能被其他類變更方法里的內(nè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è)類中,也有可能是在父類或其他的類中。(2)被調(diào)用的方法有可能是類方法,也有可能是實(shí)例方法。(3)主調(diào)方法有可能是類方法,也有可能是實(shí)例方法。方法調(diào)用的寫(xiě)法就要根據(jù)方法所在的位置及它本身的性質(zhì)來(lái)進(jìn)行調(diào)用。,上表的原則:,1.this與super不能用在由static修飾的類方法里。若放在其中,則會(huì)產(chǎn)生編譯錯(cuò)誤信息:non-staticvariablethiscannotbereferencedfromastaticcontextnon-staticvariablesupercannotbereferencedfromastaticcontext2.在類方法中可直接調(diào)用本身類方法,但不可直接調(diào)用實(shí)例方法。3.在實(shí)例方法中可直接調(diào)用本身類中的類方法與實(shí)例方法。4.this與super只能用在實(shí)例方法中。5.xx對(duì)象.xx方法的方式可用于任何情況里。,例:TestMethod.java,(四)成員方法參數(shù)的傳遞,參數(shù)可以是基本數(shù)據(jù)類型、數(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國(guó)自由飛行包行業(yè)市場(chǎng)占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 2025至2030中國(guó)自動(dòng)水龍頭行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 美妝品牌趨勢(shì)引領(lǐng)者:探索零廢棄美妝品牌的行業(yè)未來(lái)
- 學(xué)校營(yíng)養(yǎng)餐計(jì)劃的科學(xué)食譜教學(xué)手冊(cè)
- 2025至2030中國(guó)能源行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)與行業(yè)深度研究及發(fā)展前景投資評(píng)估分析
- 2025至2030中國(guó)聚苯并咪唑(PBI)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)老年生活用品行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資價(jià)值報(bào)告
- 2025至2030中國(guó)美容口服液行業(yè)市場(chǎng)占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 北師大版六年級(jí)數(shù)學(xué)下冊(cè)線上復(fù)習(xí)計(jì)劃
- 2025至2030中國(guó)網(wǎng)站運(yùn)營(yíng)行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢分析報(bào)告
- 母乳喂養(yǎng)技術(shù)課件教學(xué)
- 低空經(jīng)濟(jì)城市發(fā)展全景研究報(bào)告-從典型城市低空經(jīng)濟(jì)發(fā)展全景圖鑒到如何因地制宜發(fā)展低空經(jīng)濟(jì)的深度剖析
- 成都鹽道街中學(xué)實(shí)驗(yàn)學(xué)校數(shù)學(xué)新初一分班試卷含答案
- 【MOOC】中小學(xué)音樂(lè)教學(xué)設(shè)計(jì)與案例評(píng)析-華南師范大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 廉潔應(yīng)征承諾書(shū)
- 高校畢業(yè)生學(xué)籍檔案管理課件
- 徐健順吟誦文集(.12.16)
- 臨床藥師用藥干預(yù)記錄表
- 江西省油茶造林作業(yè)設(shè)計(jì)技術(shù)規(guī)范
- 長(zhǎng)焰煤快速熱解(快速熱解裝置100×10項(xiàng)目商業(yè)計(jì)劃書(shū)寫(xiě)作模板-融資招商
- 拼音PPT課件--聲母
評(píng)論
0/150
提交評(píng)論