(教案)Java程序設計精編教程(第3版)-教案48學時-第5章_第1頁
(教案)Java程序設計精編教程(第3版)-教案48學時-第5章_第2頁
(教案)Java程序設計精編教程(第3版)-教案48學時-第5章_第3頁
(教案)Java程序設計精編教程(第3版)-教案48學時-第5章_第4頁
(教案)Java程序設計精編教程(第3版)-教案48學時-第5章_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE29授課內(nèi)容學時分配教學方法與手段進度計劃(周次)課堂講授(學時)上機實踐(學時)Java入門2201Java應用程序的基本結(jié)構(gòu)4221-2標識符與簡單的數(shù)據(jù)類型運算符、表達式與語句2202類與對象8623~4子類與繼承4405接口與實現(xiàn)4226內(nèi)部類與異常類2207常用實用類4407-8輸入、輸出流2208組件及事件處理6429-10Java多線程機制44010-11Java網(wǎng)絡編程22011JDBC數(shù)據(jù)庫操作42212總學時=SUM(ABOVE)48=SUM(ABOVE)38=SUM(ABOVE)10

各章教學實施計劃章節(jié)題目第5章類與對象5.1節(jié)-5.3.4節(jié)學時2教學目的、要求(分了解、理解、掌握三個層次):了解面向?qū)ο蟮奶匦?,理解Java類的語法規(guī)則。掌握構(gòu)造方法與對象的創(chuàng)建。教學內(nèi)容(包括基本內(nèi)容、重點、難點):基本內(nèi)容:面向?qū)ο蟮奶匦灶悩?gòu)造方法與對象的創(chuàng)建教學重點:重點是類的語法規(guī)則、構(gòu)造方法與對象的創(chuàng)建。教學難點:難點是對象的創(chuàng)建過程,對象引用與實體的關(guān)系。討論、思考題、作業(yè):第93頁習題51題6題-8題預習第5章5.4-5.7節(jié)參考書目(含參考書、文獻等)具體內(nèi)容:參考書對應章節(jié)

課堂教學實施計劃第4課教學過程設計:復習分鐘;授新課95分鐘討論5分鐘;其它分鐘授課類型(請打√):理論課√討論課□實驗課□習題課□其它□教學方式(請打√):講授√討論□示教□指導□其它□教學手段(請打√):多媒體模型□實物□掛圖□音像□其它√主要內(nèi)容面向?qū)ο蟮奶匦灶悩?gòu)造方法與對象的創(chuàng)建教學重點:重點是類的語法規(guī)則、構(gòu)造方法與對象的創(chuàng)建。教學難點:難點是對象的創(chuàng)建過程,對象引用與實體的關(guān)系?!?.1面向?qū)ο蟮奶匦悦嫦驅(qū)ο缶幊讨饕w現(xiàn)下列三個特性

封裝性

繼承

多態(tài)§5.2類類是組成Java程序的基本要素。類封裝了一類對象的狀態(tài)和方法。類是用來定義對象的模板。類的實現(xiàn)包括兩部分:類聲明和類體?;靖袷綖椋篶lass類名{類體的內(nèi)容}§5.2.1類聲明類聲明:class類名如:classPeople”和“class動物”稱作類聲明;“People”和“動物”分別是類名?!?.2.2類體◆類聲明之后的一對大括號“{”,“}”以及它們之間的內(nèi)容稱作類體,大括號之間的內(nèi)容稱作類體的內(nèi)容?!纛愺w的內(nèi)容由兩部分構(gòu):一部分是變量的聲明,用來刻畫屬性;另一部分是方法的定義,用來刻畫功能?!?.2.3成員變量和局部變量類體中變量聲明部分所聲明的變量被稱作類的成員變量。在方法體中聲明的變量和方法的參數(shù)被稱作局部變量。1.變量的類型:2.變量的有效范圍:3.成員變量的隱藏:4.編程風格(1)一行只聲明一個變量。(2)變量的名字符合標識符規(guī)定。(3)變量名字見名知意,避免容易混淆的變量名字§5.2.4方法方法的定義包括兩部分:方法聲明和方法體.一般格式為:方法聲明部分{方法體的內(nèi)容}1.方法聲明部分floatarea(){…}注:方法的返回類型、方法的參數(shù)、方法的名字。2.方法體方法聲明之后的一對大括號“{”,“}”以及之間的內(nèi)容稱為方法的方法體.方法體的內(nèi)容包括局部變量的聲明和Java語句。intgetSum(intn){//參數(shù)變量n是局部變量intsum=0;//聲明局部變量sumfor(inti=1;i<=n;i++){//for循環(huán)語句sum=sum+i;}returnsum;//return語句}和類的成員變量不同的是,局部變量只在方法內(nèi)有效,而且與其聲明的位置有關(guān)。publicclassA{intm=10,sum=0;//成員變量,在整個類中有效voidf(){if(m>9){intz=10;//z僅僅在該復合語句中有效z=2*m+z;}for(inti=0;i<m;i++){sum=sum+i;//i僅僅在該循環(huán)語句中有效}m=sum;//合法,因為m和sum有效z=i+sum;//非法,因為i和z已無效}}3.區(qū)分成員變量和局部變量classTom{intx=10,y;voidf(){intx=5;y=x+x;//y得到的值是10,不是20。如果方法f中沒有“intx=5;”,y的值將是20}}§5.2.5需要注意的問題

類體的內(nèi)容由兩部分構(gòu)成:一部分是變量的聲明,另一部分是方法的定義。對成員變量的操作只能放在方法中,方法可以對成員變量和該方法體中聲明的局部變量進行操作。在聲明成員變量時可以同時賦予初值,但是不可以在類體中有單獨的賦值語句(不可以有變量的聲明和方法的定義以外的其它語句)。§5.2.6類的UML圖(簡單介紹)UML(UnifiedModelingLanguageDiagram)是被用于描述一個系統(tǒng)的靜態(tài)結(jié)構(gòu)。一個UML中通常包含有類(Class)的UML圖,接口(Interface)的UML圖以及泛化關(guān)系(Generalization)的UML圖、關(guān)聯(lián)關(guān)系(Association)的UML圖、依賴關(guān)系(Dependency)的UML圖和實現(xiàn)關(guān)系(Realization)的UML圖。在類的UML圖中,使用一個長方形描述一個類的主要構(gòu)成,將長方形垂直地分為三層。第1層是名字層;第2層是變量層,也稱屬性層;第3層是方法層,也稱操作層?!?.3構(gòu)造方法與對象的創(chuàng)建(重點)§5.3.1構(gòu)造方法構(gòu)造方法是一種特殊方法,它的名字必須與它所在的類的名字完全相同,而且沒有類型。1.默認構(gòu)造方法與自定義構(gòu)造方法2.構(gòu)造方法沒有類型§5.3.2創(chuàng)建對象創(chuàng)建一個對象包括對象的聲明和為對象分配變量兩個步驟。1.對象的聲明一般格式為:類的名字對象名字;如:Laderlader;2.為聲明的對象分配變量使用new運算符和類的構(gòu)造方法為聲明的對象分配變量,并返回一個引用值給對象名稱。即創(chuàng)建對象。如果類中沒有構(gòu)造方法,系統(tǒng)會調(diào)用默認的構(gòu)造方法,默認的構(gòu)造方法是無參數(shù)的,且方法體中沒有語句。例子1Example5_1.javaclassXiyoujiRenwu{floatheight,weight;Stringhead,ear,hand,foot,mouth;voidspeak(Strings){System.out.println(s);}}publicclassExample5_1{publicstaticvoidmain(Stringargs[]){XiyoujiRenwuzhubajie;//聲明對象zhubajie=newXiyoujiRenwu();//為對象分配變量(使用new和默認的構(gòu)造方法)}}例子2Example5_2.javaclassPoint{intx,y;Point(inta,intb){x=a;y=b;}}publicclassExample5_2{publicstaticvoidmain(Stringargs[]){Pointp1,p2;//聲明對象p1和p2p1=newPoint(10,10);//為對象分配變量(使用new和類中的構(gòu)造方法)p2=newPoint(23,35);//為對象分配變量(使用new和類中的構(gòu)造方法)}}3.對象的內(nèi)在模型以例題1為例,詳細介紹對象的內(nèi)在模型。(1)聲明對象時的內(nèi)存模型(2)對象分配內(nèi)存后的內(nèi)存模型(3)創(chuàng)建多個不同的對象§5.3.3使用對象1.通過使用運算符“.”對象操作自己的變量(對象的屬性)2.使用運算符“.”,對象調(diào)用類中的方法(對象的功能)3.體現(xiàn)封裝例子3Example5_3.javaclassXiyoujiRenwu{floatheight,weight;Stringhead,ear,hand,foot,mouth;voidspeak(Strings){head="歪著頭";System.out.println(s);}}publicclassExample5_3{publicstaticvoidmain(Stringargs[]){XiyoujiRenwuzhubajie,sunwukong;//聲明對象zhubajie=newXiyoujiRenwu();//為對象分配變量sunwukong=newXiyoujiRenwu();zhubajie.height=1.80f;//對象給自己的變量賦值zhubajie.head="大頭";zhubajie.ear="一雙大耳朵";sunwukong.height=1.62f;//對象給自己的變量賦值sunwukong.weight=1000f;sunwukong.head="繡發(fā)飄飄";System.out.println("zhubajie的身高:"+zhubajie.height);System.out.println("zhubajie的頭:"+zhubajie.head);System.out.println("sunwukong的重量:"+sunwukong.weight);System.out.println("sunwukong的頭:"+sunwukong.head);zhubajie.speak("俺老豬我想娶媳婦");//對象調(diào)用方法System.out.println("zhubajie現(xiàn)在的頭:"+zhubajie.head);sunwukong.speak("老孫我重1000斤,我想騙八戒背我");//對象調(diào)用方法System.out.println("sunwukong現(xiàn)在的頭:"+sunwukong.head);}}§5.3.4對象的引用和實體

一個類創(chuàng)建的兩個對象,如果具有相同的引用,那么就具有完全相同的實體。假如在程序中使用了如下的賦值語句:p1=p2;即把p2中的引用賦給了p1,因此p1和p2本質(zhì)上是一樣的.一個類創(chuàng)建的兩個對象,如果具有相同的引用,那么就具有完全相同的實體(變量)1.避免使用空對象2.垃圾收集本次課總結(jié)類是組成Java源文件的基本元素。

類體可以有兩種重要的成員:成員變量和方法。

類是面向?qū)ο笳Z言中最重要的一種數(shù)據(jù)類型,那么就可以用它來聲明變量。在面向?qū)ο笳Z言中,用類聲明的變量被稱作對象。對象創(chuàng)建成功后,可以操作類中的變量和方法。作業(yè)第93頁習題51題,6題-8題預習第5章5.4-5.7節(jié)

各章教學實施計劃章節(jié)題目第5章類與對象5.4節(jié)-5.7節(jié)學時2教學目的、要求(分了解、理解、掌握三個層次):1、掌握類與程序的基本結(jié)構(gòu)。2、掌握方法調(diào)用時參數(shù)的使用,特別是引用類型參數(shù)的傳遞。3、了解對象的組合教學內(nèi)容(包括基本內(nèi)容、重點、難點):基本內(nèi)容:參數(shù)傳值對象的組合實例成員與類成員方法重載與多態(tài)重點參數(shù)傳值,對象的組合難點參數(shù)傳值、尤其是引用類型參數(shù)的傳值。討論、思考題、作業(yè):第93頁習題52題-5題10題預習第5章5.8-5.13節(jié)參考書目(含參考書、文獻等)具體內(nèi)容:參考書對應章節(jié)

課堂教學實施計劃第5課教學過程設計:復習5分鐘;授新課90分鐘討論5分鐘;其它分鐘授課類型(請打√):理論課√討論課□實驗課□習題課□其它□教學方式(請打√):講授√討論□示教□指導□其它□教學手段(請打√):多媒體√模型□實物□掛圖□音像□其它√基本內(nèi)容:參數(shù)傳值對象的組合實例成員與類成員方法重載與多態(tài)重點參數(shù)傳值,對象的組合難點參數(shù)傳值、尤其是引用類型參數(shù)的傳值?!?.4參數(shù)傳值方法中最重要的部分之一就是方法的參數(shù),參數(shù)屬于局部變量,當對象調(diào)用方法時,參數(shù)被分配內(nèi)存空間,并要求調(diào)用者向參數(shù)專遞值,即方法被調(diào)用時,參數(shù)變量必須有具體的值?!?.4.1傳值機制在Java中,方法的所有參數(shù)都是“傳值”的,也就是說,方法中參數(shù)變量的值是調(diào)用者指定的值的拷貝。例如,如果向方法的int型參數(shù)x傳遞一個int值,那么參數(shù)x得到的值是傳遞的值的拷貝。§5.4.2基本數(shù)據(jù)類型參數(shù)的傳值對于基本數(shù)據(jù)類型的參數(shù),向該參數(shù)傳遞的值的級別不可以高于該參數(shù)的級別。例子4Circle.javapublicclassCircle{doubleradius,area;Circle(){}Circle(doubler){radius=r;}voidsetRadius(doubler){if(r>0){radius=r;}}doublegetRadius(){returnradius;}doublegetArea(){area=3.14*radius*radius;returnarea;}}Example5_4.javapublicclassExample5_4{publicstaticvoidmain(Stringargs[]){Circlecircle=newCircle();doublew=121.709;circle.setRadius(w);System.out.println("圓的半徑:"+circle.getRadius());System.out.println("圓的面積:"+circle.getArea());System.out.println("更改向方法參數(shù)r傳遞值的w的值為100");w=100;System.out.println("w="+w);System.out.println("圓的半徑:"+circle.getRadius());}}§5.4.3引用類型參數(shù)的傳值當參數(shù)是引用類型時,“傳值”傳遞的是變量中存放的“引用”,而不是變量所引用的實體。例子5Circular.javapublicclassCircular{Circlebottom;doubleheight;Circular(Circlec,doubleh){//構(gòu)造方法,將Circle類的實例的引用傳遞給bottombottom=c;height=h;}doublegetVolme(){returnbottom.getArea()*height/3.0;}doublegetBottomRadius(){returnbottom.getRadius();}publicvoidsetBottomRadius(doubler){bottom.setRadius(r);}}Example5_5.javapublicclassExample5_5{publicstaticvoidmain(Stringargs[]){Circlecircle=newCircle(10);//【代碼1】System.out.println("main方法中circle的引用:"+circle);System.out.println("main方法中circle的半徑"+circle.getRadius());Circularcircular=newCircular(circle,20);//【代碼2】System.out.println("circular圓錐的bottom的引用:"+circular.bottom);System.out.println("圓錐的bottom的半徑:"+circular.getBottomRadius());System.out.println("圓錐的體積:"+circular.getVolme());doubler=8888;System.out.println("圓錐更改底圓bottom的半徑:"+r);circular.setBottomRadius(r);//【代碼3】System.out.println("圓錐的bottom的半徑:"+circular.getBottomRadius());System.out.println("圓錐的體積:"+circular.getVolme());System.out.println("main方法中circle的半徑:"+circle.getRadius());System.out.println("main方法中circle的引用將發(fā)生變化");circle=newCircle(1000);//重新創(chuàng)建circle【代碼4】System.out.println("現(xiàn)在main方法中circle的引用:"+circle);System.out.println("main方法中circle的半徑:"+circle.getRadius());System.out.println("但是不影響circular圓錐的bottom的引用");System.out.println("circular圓錐的bottom的引用:"+circular.bottom);System.out.println("圓錐的bottom的半徑:"+circular.getBottomRadius());}}§5.5對象的組合一個類可以把對象作為自己的成員變量,如果用這樣的類創(chuàng)建對象,那么該對象中就會有其它對象,也就是說該對象將其他對象作為自己的組成部分,或者說該對象是由幾個對象組合而成?!?.5.1由矩形和圓組合而成的圖形在下面的例6中(模擬矩形和圓組合而成的圖形),一共編寫了4個類,分成4個源文件Rectangle.java、Circle.java、Geometry.java和Example5_6.java,需要將這4個源文件分別編輯,并保存在相同的目錄中,比如C:\ch5中。例子6Rectangle.javapublicclassRectangle{doublex,y,width,height;publicvoidsetX(doublea){x=a;}publicdoublegetX(){returnx;}publicvoidsetY(doubleb){y=b;}publicdoublegetY(){returny;}publicvoidsetWidth(doublew){if(w>0)width=w;}publicdoublegetWidth(){returnwidth;}publicvoidsetHeight(doubleh){if(height>0)height=h;}publicdoublegetHeight(){returnheight;}}Circle.javapublicclassCircle{doublex,y,radius;publicvoidsetX(doublea){x=a;}publicdoublegetX(){returnx;}publicvoidsetY(doubleb){y=b;}publicdoublegetY(){returny;}publicvoidsetRadius(doubler){if(r>0)radius=r;}publicdoublegetRadius(){returnradius;}}Geometry.javapublicclassGeometry{Rectanglerect;Circlecircle;Geometry(Rectanglerect,Circlecircle){this.rect=rect;this.circle=circle;}publicvoidsetCirclePosition(doublex,doubley){circle.setX(x);circle.setY(y);}publicvoidsetCircleRadius(doubleradius){circle.setRadius(radius);}publicvoidsetRectanglePosition(doublex,doubley){rect.setX(x);rect.setY(y);}publicvoidsetRectangleWidthAndHeight(doublew,doubleh){rect.setWidth(w);rect.setHeight(h);}publicvoidshowState(){doublecircleX=circle.getX();doublerectX=rect.getX();if(rectX-rect.getWidth()>=circleX+circle.getRadius())System.out.println("矩形在圓的右側(cè)");if(rectX+rect.getWidth()<=circleX-circle.getRadius())System.out.println("矩形在圓的左側(cè)");}}Example5_6.javapublicclassExample5_6{publicstaticvoidmain(Stringargs[]){Rectanglerect=newRectangle();Circlecircle=newCircle();Geometrygeometry;geometry=newGeometry(rect,circle);geometry.setRectanglePosition(30,40);geometry.setRectangleWidthAndHeight(120,80);geometry.setCirclePosition(260,30);geometry.setCircleRadius(60);System.out.print("幾何圖形中圓和矩形的位置關(guān)系是:");geometry.showState();//顯示圓和矩形的位置關(guān)系System.out.println("幾何圖形重新調(diào)整了圓和矩形的位置。");geometry.setRectanglePosition(220,160);geometry.setCirclePosition(40,30);System.out.print("調(diào)整后,幾何圖形中圓和矩形的位置關(guān)系是:");geometry.showState();//顯示圓和矩形的位置關(guān)系}}§5.5.2關(guān)聯(lián)關(guān)系和依賴關(guān)系的UML圖(簡單介紹學生自主學習)關(guān)聯(lián)關(guān)系依賴關(guān)系§5.6實例成員與類成員§5.6.1實例變量和類變量的聲明在聲明成員變量時,用關(guān)鍵字static給予修飾的稱作類變量,否則稱作實例變量(類變量也稱為static變量,靜態(tài)變量)?!?.6.2實例變量和類變量的區(qū)別1.不同對象的實例變量互不相同2.所有對象共享類變量3.通過類名直接訪問類變量例子7Lader.javapublicclassLader{double上底,高;//實例變量staticdouble下底;//類變量void設置上底(doublea){上底=a;}void設置下底(doubleb){下底=b;}double獲取上底(){return上底;}double獲取下底(){return下底;}}Example5_7.javapublicclassExample5_7{publicstaticvoidmain(Stringargs[]){Lader.下底=100;//Lader的字節(jié)碼被加載到內(nèi)存,通過類名操作類變量LaderladerOne=newLader();LaderladerTwo=newLader();laderOne.設置上底(28);laderTwo.設置上底(66);System.out.println("laderOne的上底:"+laderOne.獲取上底());System.out.println("laderOne的下底:"+laderOne.獲取下底());System.out.println("laderTwo的上底:"+laderTwo.獲取上底());System.out.println("laderTwo的下底:"+laderTwo.獲取下底());}}§5.6.3實例方法和類方法的定義classA{inta;floatmax(floatx,floaty){//實例方法…}staticfloatjerry(){//類方法…}staticvoidspeak(Strings){//類方法…}}§5.6.4實例方法和類方法的區(qū)別1.對象調(diào)用實例方法當對象調(diào)用實例方法時,該方法中出現(xiàn)的實例變量就是分配給該對象的實例變量;該方法中出現(xiàn)的類變量也是分配給該對象的變量,只不過這個變量和所有的其他對象共享而已。2.類名調(diào)用類方法從而類方法不僅可以被類創(chuàng)建的任何對象調(diào)用執(zhí)行,也可以直接通過類名調(diào)用。和實例方法不同的是,類方法不可以操作實例變量,這是因為在類創(chuàng)建對象之前,實例成員變量還沒有分配內(nèi)存。例子8Example5_8.javaclassSum{intx,y,z;staticintgetContinueSum(intstart,intend){intsum=0;for(inti=start;i<=end;i++){sum=sum+i;}returnsum;}}publicclassExample5_8{publicstaticvoidmain(Stringargs[]){intresult=Sum.getContinueSum(0,100);System.out.println(result);}}§5.7方法重載與多態(tài)方法重載的意思是:一個類中可以有多個方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同。classA{floatadd(inta,intb){returna+b;}floatadd(longa,intb){returna+b;}doubleadd(doublea,intb){returna+b;}}例子9Tixing.javapublicclassTixing{doubleabove,bottom,height;Tixing(doublea,doubleb,doubleh){above=a;bottom=b;height=h;}doublegetArea(){return(above+bottom)*height/2;}}People.javapublicclassPeople{doublecomputerArea(Circlec){doublearea=c.getArea();returnarea;}doublecomputerArea(Tixingt){doublearea=t.getArea();returnarea;}}Example5_9.javapublicclassExample5_9{publicstaticvoidmain(Stringargs[]){Circlecircle=newCircle();circle.setRadius(196.87);Tixinglader=newTixing(3,21,9);Peoplezhang=newPeople();System.out.println("zhang計算圓的面積:");doubleresult=puterArea(circle);System.out.println(result);System.out.println("zhang計算梯形的面積:");result=puterArea(lader);System.out.println(result);}}本次課總結(jié)方法中最重要的部分之一就是方法的參數(shù),參數(shù)屬于局部變量,方法被調(diào)用時,參數(shù)變量必須有具體的值。對于基本數(shù)據(jù)類型的參數(shù),向該參數(shù)傳遞的值的級別不可以高于該參數(shù)的級別;當參數(shù)是引用類型時,“傳值”傳遞的是變量中存放的“引用”,而不是變量所引用的實體。方法重載的意思是:一個類中可以有多個方法具有相同的名字,但這些方法的參數(shù)必須不同。作業(yè)第93頁習題52題-5題10題預習第5章5.8-5.13節(jié)

各章教學實施計劃章節(jié)題目:第5章類與對象5.8節(jié)-5.13節(jié)學時2教學目的、要求(分了解、理解、掌握三個層次):理解this關(guān)鍵字掌握package聲明包語句及import語句理解訪問權(quán)限。教學內(nèi)容基本內(nèi)容:this關(guān)鍵字包import語句訪問權(quán)限教學重點this關(guān)鍵字、package聲明包語句及import語句。難點this關(guān)鍵字、訪問權(quán)限的理解。討論、思考題、作業(yè):第93頁習題59題預習第6章6.1-6.5節(jié)參考書目(含參考書、文獻等)具體內(nèi)容:參考書對應章節(jié)

課堂教學實施計劃第6課教學過程設計:復習5分鐘;授新課90分鐘討論5分鐘;其它分鐘授課類型(請打√):理論課√討論課□實驗課□習題課□其它□教學方式(請打√):講授√討論□示教□指導□其它□教學手段(請打√):多媒體√模型□實物□掛圖□音像□其它√基本內(nèi)容:this關(guān)鍵字包import語句訪問權(quán)限教學重點this關(guān)鍵字、package聲明包語句及import語句。難點this關(guān)鍵字、訪問權(quán)限的理解。§5.8this關(guān)鍵字this是Java的一個關(guān)鍵字,表示某個對象。this可以出現(xiàn)在實例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中?!?.8.1在構(gòu)造方法中使用thisthis關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時,代表使用該構(gòu)造方法所創(chuàng)建的對象.例子10People.javapublicclassPeople{intleg,hand;Stringname;People(Strings){name=s;this.init();//可以省略this,即將this.init();寫成init();}voidinit(){leg=2;hand=2;System.out.println(name+"有"+hand+"只手"+leg+"條腿");}publicstaticvoidmain(Stringargs[]){Peopleboshi=newPeople("布什");//創(chuàng)建boshi時,構(gòu)造方法中的this就是對象boshi}}§5.8.2在實例方法中使用this實例方法必須只能通過對象來調(diào)用,不能用類名來調(diào)用。當this關(guān)鍵字出現(xiàn)實例方法中時,代表正在調(diào)用該方法的當前對象。實例方法可以操作類的成員變量,當實例成員變量在實例方法中出現(xiàn)時,默認的格式是:this.成員變量;當static成員變量在實例方法中出現(xiàn)時,默認的格式是:類名.成員變量;§5.9包包是Java語言中有效地管理類的一個機制。包名的目的是有效的區(qū)分名字相同的類。不同Java源文件中兩個類名字相同時,它們可以通過隸屬不同的包來相互區(qū)分?!?.9.1包語句通過關(guān)鍵字package聲明包語句。package語句作為Java源文件的第一條語句,為該源文件中聲明的類指定包名。package語句的一般格式為:package包名;合法的包名packagesunrise;package;§5.9.2有包名的類的存儲目錄程序如果使用了包語句,例如:packagetom.jiafei;那么存儲文件的目錄結(jié)構(gòu)中必須包含有如下的結(jié)構(gòu)…\tom\jiafei如:c:\1000\tom\jiafei并且要將源文件編譯得到的類的字節(jié)碼文件保存在目錄c:\1000\tom\jiafei中(源文件可以任意存放)?!?.9.3運行有包名的主類如果主類的包名是tom.jiafei,那么主類的字節(jié)碼一定存放在…\tom\jiefei目錄中,運行時必須到tom\jiefei的上一層(即tom的父目錄)目錄中去運行主類。假設tom\jiefei的上一層目錄是1000,那么,必須如下格式來運行:C:\1000>javatom.jiafei.主類名注:必須是:“包名.主類名”例子11Student.javapackagetom.jiafei;publicclassStudent{intnumber;Student(intn){number=n;}voidspeak(){System.out.println("Student類的包名是tom.jiafei,我的學號:"+number);}}Example5_11.javapackagetom.jiafei;publicclassExample5_11{publicstaticvoidmain(Stringargs[]){Studentstu=newStudent(10201);stu.speak();System.out.println("主類的包名也是tom.jiafei");}}§5.10import語句一個類可能需要另一個類聲明的對象作為自己的成員或方法中的局部變量,如果這兩個類在同一個包中,當然沒有問題。如果一個類想要使用的那個類和它不在一個包中,要使用import語句完成使命?!?.10.1引入類庫中的類如果用戶需要類庫中的類就必須使用import語句,如:importjava.until.Date;Java為我們提供了大約130多個包(在后續(xù)的章節(jié)我們將需要一些重要包中的類),比如:java.lang包含所有的基本語言類(見9,12章)javax.swing包含抽象窗口工具集中的圖形、文本、窗口GUI類(見11章)java.io包含所有的輸入輸出類(見10章)java.until包含實用類(見9章)java.sql包含操作數(shù)據(jù)庫的類(第14章)包含所有實現(xiàn)網(wǎng)絡功能的類(見第13章)如果要引入一個包中的全部類,則可以用統(tǒng)配符號:星號(*)來代替,如:importjava.util.*;表示引入java.util包中所有的類,而importjava.until.Date;只是引入java.until包中的Date類。例子12Example5_12.javaimportjava.util.Date;publicclassExample5_12{publicstaticvoidmain(Stringargs[]){Datedate=newDate();System.out.println("本地機器的時間:");System.out.println(date);}}§5.10.2引入自定義包中的類用戶程序也可以使用import語句引入非類庫中有包名的類,如:importtom.jiafei.*;例子13Triangle.javapackagetom.jiafei;publicclassTriangle{doublesideA,sideB,sideC;booleanisTriange;publicTriangle(doublea,doubleb,doublec){sideA=a;sideB=b;sideC=c;if(a+b>c&&a+c>b&&c+b>a){isTriange=true;}else{isTriange=false;}}publicvoid計算面積(){if(isTriange){doublep=(sideA+sideB+sideC)/2.0;doublearea=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));System.out.println("是一個三角形,面積是:"+area);}else{System.out.println("不是一個三角形,不能計算面積");}}publicvoid修改三邊(doublea,doubleb,doublec){sideA=a;sideB=b;sideC=c;if(a+b>c&&a+c>b&&c+b>a){isTriange=true;}else{isTriange=false;}}}下面例子14中的Example5_14.java中的主類(無包名)使用import語句引如tom.jiafei包中的Triangle類,以便創(chuàng)建三角形,并計算三角形的面積。將Example5_14.java保存在C:\ch5目錄中(因為ch5下有tom\jiafei子目錄)。例子14Example5_14.javaimporttom.jiafei.Triangle;publicclassExample5_14{publicstaticvoidmain(Stringargs[]){Triangletri=newTriangle(67,10);tri.計算面積();tri.修改三邊(3,4,5);tri.計算面積();}}§5.11訪問權(quán)限當用一個類創(chuàng)建了一個對象之后,該對象可以通過“.”運算符操作自己的變量、使用類中的方法,但對象操作自己的變量和使用類中的方法是有一定限制的?!?.11.1何謂訪問權(quán)限所謂訪問權(quán)限是指對象是否可以通過“.”運算符操作自己的變量或通過“.”運算符使用類中的方法。訪問限制修飾符有private、protected和public,都是Java的關(guān)鍵字,用來修飾成員變量或方法。§5.11.2私有變量和私有方法用關(guān)鍵字private修飾的成員變量和方法稱為私有變量和私有方法。對于私有成員變量或方法,只有在本類中創(chuàng)建該類的對象時,這個對象才能訪問自己的私有成員變量和類中的私有方法。例子15Student.javapublicclassStudent{privateintage;publicvoidsetAge(intage){if(age>=7&&age<=28){this.age=age;}}publicintgetAge(){returnage;}}Example5_15.javapublicclassExample5_15{publicstaticvoidmain(Stringargs[]){Studentzhang=newStudent();Studentgeng=newStudent();zhang.setAge(23);System.out.println("zhang的年齡:"+zhang.getAge());geng.setAge(25);//zhang.age=23;或geng.age=25;都是非法的,因為zhang和geng已經(jīng)不在Student類中System.out.println("geng的年齡:"+geng.getAge());}}§5.11.3共有變量和共有方法用public修飾的成員變量和方法被稱為共有變量和共有方法。我們在任何一個類中用類Tom創(chuàng)建了一個對象后,該對象能訪問自己的public變量和類中的public方法(也可以通過類名來操作成員變量、方法)。代碼用例classTom{publicfloatweight;//weight是public的float型變量publicfloatf(floata,floatb){//方法f是public方法returna+b;}}classJerry{voidg(){Tomcat=newTom();cat.weight=23f;//合法floatsum=cat.f(3,4);//合法}}§5.11.4友好變量和友好方法不用private、public、protected修飾符的成員變量和方法被稱為友好變量和友好方法,如:classTom{floatweight;//weight是友好的float型變量floatf(floata,floatb){//方法f是友好方法returna+b;}}當在另外一個類中用類Tom創(chuàng)建了一個對象后,如果這個類與Tom類在同一個包中,那么該對象能訪問自己的友好變量和友好方法。在任何一個與Tom同一包中的類中,也可以通過Tom類的類名訪問Tom類的類友好成員變量和類友好方法?!?.11.5受保護的成員變量和方法用protected修飾的成員變量和方法被稱為受保護的成員變量和受保護的方法,如:classTom{protectedfloatweight;//weight是protected的float型變量protectedfloatf(floata,floatb){//方法f是protected方法returna+b;}}§5.11.6public類與友好類類聲明時,如果在關(guān)鍵字class前面加上public關(guān)鍵字,就稱這樣的類是一個public類??梢栽谌魏瘟硗庖粋€類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論