




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7 的方面:方法的返回值、this關(guān)鍵字、類(lèi)成員和實(shí)例成員、控制以及變量作用域。方法的返回返回在這種情況下,一個(gè)return語(yǔ)句通常被用于終止一個(gè)控制流程塊并退出方法。如下代碼所示。 如果一個(gè)方法已經(jīng)為void,但是在方法內(nèi)還試圖返回一個(gè)值的話(huà),編譯器將報(bào)錯(cuò)。如果一個(gè)方法沒(méi)有為void,那么就必須包含一個(gè)return語(yǔ)句,后跟相應(yīng)的返回值。例如:return返回值 publicintgetHeight(…return}publicintgetHeight(…return}publicintgetArea({returnwidth*publicintgetArea({returnwidth*publicpublicclassCircleprivatedoublearea=publicPointgetPoint(intx,int{returnnew} 返回類(lèi)型為publicvoidsetRadius(doublenewRadius){radius=newRadius;} publicdoublereturn3.14*radius*}}在上面的代碼中,返回一個(gè)新創(chuàng)建的PointgetPoint(intx,inty)方法時(shí)傳遞的實(shí)參值初始化實(shí)例對(duì)象。返回類(lèi)型Point指明此方法一定要返回一個(gè)Point對(duì)象。返回類(lèi)或classprivateintx;classprivateintx;x坐privateinty;y坐publicPoint(intcoordinateX,intcoordinateY){x=coordinateX;y=coordinateY;}publictoString(){return"x:"++",y:"+}}publicclassPointExamplepublicPointgetPoint(intx,inty){returnnewPoint(x,y);}publicpublicstaticvoidmain(String[]PointExamplepointExample=newPointpoint=pointExample.getPoint(3,5);//將返回值賦給同類(lèi)型的變量}}ImaginaryNumberjava.lang.NumberNumber類(lèi)又是Object的子類(lèi),如下圖所示。圖ImaginaryNumber類(lèi)的層次結(jié)publicNumberreturnANumber()} publicNumberreturnANumber()}法可以返回的返回類(lèi)型Number的子類(lèi),但是不能返回其超類(lèi)。}JDK1.5中加入的新特性,即在面向?qū)ο蟮木幊讨凶宇?lèi)在重寫(xiě)父類(lèi)的方法時(shí)可以改變這個(gè)方法的返回值使用thispublicclassPointprivatepublicclassPointprivateintx= 最經(jīng)常使用this的字段。例如,象下面的代碼一樣定義Point被privateprivateinty= publicPoint(inta,int{x=a;y=b;}{x=}publicvoidsetY(int{y=}}publicclasspublicclass{publicintx= 段 段{this.x=x;this.y=y;}{this.x=}{this.y=}}xy都了對(duì)象的字段xy。在構(gòu)造器中,x是構(gòu)造器的第一個(gè)參數(shù)的一個(gè)本地副本。要Point的字段x,構(gòu)造器必須使用this.x。按慣例,在使用構(gòu)造器對(duì)成對(duì)構(gòu)造器使用式構(gòu)造器調(diào)用”。下面是另外一種實(shí)現(xiàn)形式的Rectangle類(lèi)。publicclassRectangle privateprivateintx,privateintwidth, {this(0,0,{this(0,0,width,}publicRectangle(intxintyintwidthintheight this.x this.y this.width this.height }}的{this(0,0,0,}{this(0,0,width,}用this關(guān)鍵字調(diào)用另一個(gè)構(gòu)造器時(shí),調(diào)用代碼必須是當(dāng)前構(gòu)造器的第一行代碼。 一個(gè)類(lèi)可能會(huì)使用public修飾符,在這種情況下,類(lèi)對(duì)在任何地方的其它類(lèi)都是可見(jiàn)的。如果還有兩個(gè)額外的修飾符private和protectedprivate修飾符說(shuō)明成員只能在它所在的類(lèi)的內(nèi)部被。protected修飾符說(shuō)明成員只能在它所在的包中被到(包級(jí)私有),另外,也可以被位于其它包中的在成員級(jí)別,優(yōu)先級(jí)是這樣的:public>protected>package-private>private。如表7.1列出了表7.1級(jí)類(lèi)包是是是是是是是否是是否否是否否否么如何選擇使用級(jí)別呢?如果B程序員要使用A程序員的類(lèi),A程序員必須保證自己寫(xiě)的publicpublic{privateStringid;privateStringname;privateintage;(Stringid,Stringname,gender){this.id=id;=name;this.gender=gender;}{return}{return}{return}{this.age=}{return}}上面定義了一個(gè)類(lèi),代表個(gè)人信息。假定在創(chuàng)建一個(gè)人的信息時(shí)就設(shè)定其號(hào)(id)、(name)和(gender),一旦設(shè)定,今后個(gè)人信息中的號(hào)、和就不允許更改,但是可以改變的。為了控制其它類(lèi)對(duì)成員變量的權(quán)限,在設(shè)計(jì)類(lèi)時(shí),將所有字段設(shè)為private私有的,然后提供了一個(gè)帶有三個(gè)參數(shù)(號(hào)、和)的構(gòu)造器用于在創(chuàng)建id、name和genderid、namegender,因?yàn)椴辉试S修改,所以在類(lèi)中只提供了publicgetXXX()方法。而字段gender允許和修改,所以既提供publicsetXXX()方法,也提理解實(shí)例成員和類(lèi)成實(shí)例變classclassprivateStringbookName;privateintpageSize;privatefloatbookPrice;Book()}Book(StringbookName,intpageSize,float{this.bookName=bookName;this.pageSize=pageSize;this.bookPrice=bookPrice;}}publicclassBookjavaBook=newBook(" JavaSE7",620,68.00f);BookjavaeeBook=newBook(" }}Book類(lèi)型的實(shí)例對(duì)象,各個(gè)實(shí)例對(duì)象的實(shí)例變量在內(nèi)存中的狀態(tài)如類(lèi)變?cè)谥泻衧tatic修飾符的字段稱(chēng)為“靜態(tài)變量”或“類(lèi)變量”。它們與類(lèi)相關(guān)聯(lián),而不是與對(duì)classclassApublicstaticint }}publicclass{publicstaticvoidAa1=newA(); System.out.println("創(chuàng)建A的第二個(gè)對(duì)象前,a="+A.a);Aa2=new}}AA的構(gòu)造器,在構(gòu)造器中對(duì)類(lèi)變量a自增1。因?yàn)樗械膶?duì)象共享同一個(gè)類(lèi)變量,所以它們對(duì)類(lèi)變量a的改變也累加。publicclassprivateintpageSize;privatefloatbookPrice;privateintid;publicclassprivateintpageSize;privatefloatbookPrice;privateintid;的privatestaticintnumberOfBooks=} newBook( classBookprivateintpageSize;privatefloatbookPrice;privateintid;的privatestaticintnumberOfBooks=Book()bookNameJava從初學(xué)到精通";pageSize=652;bookPrice=classBookprivateintpageSize;privatefloatbookPrice;privateintid;的privatestaticintnumberOfBooks=Book()bookNameJava從初學(xué)到精通";pageSize=652;bookPrice=}Book(StringbookName,intpageSize,floatbookPrice)this.bookName=bookName; this.pageSize=pageSize; //用參數(shù)pageSize的值初始化字段pageSizethis.bookPrice=bookPrice; //用參數(shù)bookPrice的值初始化字段bookPriceid=++numberOfBooks;}intgetID()return}}publicclassBookjavaBook=newBook(" JavaSE7",620,68.00f);BookjavaeeBook=newBook(" }}類(lèi)方static修飾符,這樣的方法稱(chēng)為“靜態(tài)方法”或“類(lèi)方法”。類(lèi)方法被調(diào)用時(shí)應(yīng)使用類(lèi)名,而 publicstaticgetNumberOfBooks(){return靜態(tài)方法的一個(gè)普遍的作用,是用來(lái)靜態(tài)字段。例如,在上面的Book類(lèi)中,再添加一個(gè)靜態(tài)publicstaticgetNumberOfBooks(){return使用this關(guān)鍵字,因?yàn)闆](méi)有this的實(shí)例可供使用。常staticfinaldoublePI= 通過(guò)規(guī)定π的值應(yīng)該是3.975),就需要重新編譯任何使用了這個(gè)常量的類(lèi)以獲得當(dāng)前新的值。實(shí)例:Book publicclassBook{privateintpageSize;privatefloatbookPrice;的privateint的privatestaticintnumberOfBooks=publicBook()bookNameJava從初學(xué)到精通";pageSize=652;bookPrice=}publicBook(StringbookName,intpageSize,floatbookPrice)this.bookName=bookName; this.pageSize=pageSize; //用參數(shù)pageSize的值初始化字段pageSizethis.bookPrice=bookPrice; //用參數(shù)bookPrice的值初始化字段bookPriceid=++numberOfBooks;}{return}publicstaticintgetNumberOfBooks(){returnnumberOfBooks;}publicvoidbookInfo()System.out.println("書(shū)名:bookName頁(yè)數(shù):pageSize定價(jià):}{return}{this.bookName=}System.out.println("書(shū)名:bookName頁(yè)數(shù):pageSize定價(jià):}{return}{this.bookName=}{return}{this.pageSize=}{return}{this.bookPrice=}}初始化字其它邏輯。而要初始化類(lèi)變量,Java語(yǔ)言提供了“靜態(tài)初始化塊”。靜態(tài)初始}{staticintnumbersOfBooks;numbersOfBooks=}publicstaticvoidmain(String[]}}3classclassWhateverpublicstaticvarTypemyVar=initializeClassVariable();privatestaticvarTypeinitializeClassVariable(){}}其中,varType指的是返回類(lèi)型。在這里,一個(gè)私有靜態(tài)方法initializeClassVariable()來(lái)對(duì)類(lèi)變初始化實(shí)例成publicBedAndBreakfast{publicstaticintcapacity=10;privatebooleanfull=publicBedAndBreakfast{publicstaticintcapacity=10;privatebooleanfull=publicclassBookprivateintpageSize;privatefloatbookPrice;privateintid;privatestaticintnumberOfBooks=publicBook()bookName=" JavaSE7";pageSize=652;bookPricepublicclassBookprivateintpageSize;privatefloatbookPrice;privateintid;privatestaticintnumberOfBooks=publicBook()bookName=" JavaSE7";pageSize=652;bookPrice=}publicBook(StringbookName,intpageSize,floatbookPrice)this.bookName=bookName; this.pageSize=pageSize; //用參數(shù)pageSize的值初始化字段pageSizethis.bookPrice=bookPrice; //用參數(shù)bookPrice的值初始化字段bookPriceid=++numberOfBooks;}}{{}publicclasspublicclassInitializeBlockExample{}}public){}publicpublicstaticvoidmain(String[]InitializeBlockExampleinitializeBlockExample1=newInitializeBlockExample();InitializeBlockExampleinitializeBlockExample2=newInitializeBlockExample(3);}}classWhateverprivatevarTypemyVar=initializeInstanceVariable();protectedfinalvarTypeinitializeInstanceVariable()}}另classWhateverprivatevarTypemyVar=initializeInstanceVariable();protectedfinalvarTypeinitializeInstanceVariable()}}varTypefinal()方法(最終方法),final()方法將會(huì)引起錯(cuò)誤,所以在實(shí)例初始化期間對(duì)實(shí)例變量的初始化,必須調(diào)用final()方法。初始化執(zhí)行順 publicpublicclassInitializeOrderExampleintnumber=staticdoublePI=; System.out.println("number:"+number);number=22;}{ System.out.println("number:"+number);number=21;System.out.println("number:"+number);} PI=3. }publicstaticvoidmain(String[] }}變量的作用publicclassVariableScopeExamplepublicprintMsg(){}publicstaticvoidmain(String[]new}privateStringmessage= }publicclassVariableScopeExamplepublicprintMsg(){}publicstaticvoidmain(String[]new}privateStringmessage= }內(nèi),所以在開(kāi)始定義的方法printMsg()中也可以使用。publicclassVariableScopeExample2publicvoid 量Stringmessage=publicclassVariableScopeExample2publicvoid 量Stringmessage= }publicstaticvoidmain(String[]new}}VariableScopeExample.java:5VariableScopeExample.java:5:錯(cuò)誤:^ 變量位置:1:publicclassVariableScopeExample2publicvoidStringmessage= }publicstaticvoid:publicclassVariableScopeExample2publicvoidStringmessage= }publicstaticvoidmain(String[]new}}}publicprintMsg(){}message){}publicstaticvoidmain(String[]new }}無(wú)法使用該方法的參數(shù)變量message的。{privateStringmessage=" publicvoidprintMsg(){Stringmessage }publicprintMessage(){ }public{privateStringmessage=" publicvoidprintMsg(){Stringmessage }publicprintMessage(){ }publicstaticvoidmain(String[]VariableScopeExample4variableScopeExample4=newVariableScopeExample4();}opublicclassprivateStringmessage這是字段}publicvoidStringmessage這是局部變量";}publicstaticvoidmain(String[]VariableScopeExample5variableScopeExample5publicclassprivateStringmessage這是字段}publicvoidStringmessage這是局部變量";}publicstaticvoidmain(String[]VariableScopeExample5variableScopeExample5newVariableScopeExample5(); }在publicclassVariableScopeExample6message){}message){}publicstaticvoidmain(String[]VariableScopeExample6variableScopeExample6=newVariableScopeExample6(); }}在上面這個(gè)程序中,兩個(gè)不同的方法,其參數(shù)變量名稱(chēng)相同,但各自的作用域不,所以可以正}}嵌套“嵌套類(lèi)”,而包含ClassB的類(lèi)ClassA稱(chēng)為“外部類(lèi)”。classclassOuterClassclassNestedClass}}classOuterClassstatic estedClass}classInnerClass}}classOuterClassstatic estedClass}classInnerClass}}作為“外部類(lèi)”的一個(gè)成員,一個(gè)嵌套的類(lèi)可以被為private、public、protected或者包級(jí)私有的(默認(rèn)的)。(而外部類(lèi)只能被為public或包級(jí)私有)這是將只用在同一個(gè)地方的類(lèi)進(jìn)行邏輯上的分組的法。如果一個(gè)類(lèi)只對(duì)另一個(gè)類(lèi)有用,增強(qiáng)了封裝性。例如兩個(gè)頂級(jí)類(lèi)A和B,B需要A中被為private的成員。通過(guò)將類(lèi)B隱藏在類(lèi)A中,A的成員可以被為私有的,同時(shí)B也可以它們。另外,B本身對(duì)外部嵌套類(lèi)能使代碼可讀性和可性更強(qiáng)。在頂級(jí)類(lèi)中嵌套較小的類(lèi)使得代碼最接近它被使用的靜態(tài)嵌 estedClassnestedObject=new estedClass()內(nèi)部classclassOuterClassclassInnerClass}} 內(nèi)部類(lèi)的實(shí)外部類(lèi)的實(shí) 內(nèi)部類(lèi)publicpublicclassDataStructureprivatefinalstaticintSIZE=15;p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 托兒所服務(wù)的危機(jī)管理和風(fēng)險(xiǎn)控制考核試卷
- 光纜生產(chǎn)自動(dòng)化與智能化技術(shù)考核試卷
- 樓房商用租賃合同范本
- 首付購(gòu)車(chē)合同范本
- 軸承成品采購(gòu)合同范本
- 水電承包勞務(wù)合同范本
- 酒店客房服務(wù)標(biāo)準(zhǔn)及流程制度
- 靜脈輸液的操作流程及操作規(guī)范
- 電商網(wǎng)站運(yùn)營(yíng)維護(hù)服務(wù)協(xié)議
- 共享經(jīng)濟(jì)平臺(tái)技術(shù)開(kāi)發(fā)合作協(xié)議
- 大學(xué)生就業(yè)指導(dǎo)教學(xué)-大學(xué)生就業(yè)形勢(shì)與政策
- 車(chē)路協(xié)同路側(cè)設(shè)備通信終端(RSU)測(cè)試技術(shù)要求(征求意見(jiàn)稿)
- TCAICC 001-2024 張家界莓茶質(zhì)量等級(jí)評(píng)價(jià)
- 冷鏈鄉(xiāng)村物流相關(guān)行業(yè)公司成立方案及可行性研究報(bào)告
- 6.《變色龍》省公開(kāi)課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- 股權(quán)架構(gòu)設(shè)計(jì)合同
- HJ1209-2021工業(yè)企業(yè)土壤和地下水自行監(jiān)測(cè)技術(shù)指南(試行)
- 《跨境電商英語(yǔ)》課程標(biāo)準(zhǔn)
- 2024年湖南電氣職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 幼兒園衛(wèi)生保健工作匯報(bào)
- 第一課 追求向上向善的道德(課時(shí)1)(課件)
評(píng)論
0/150
提交評(píng)論