版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
J2EE及JAVA程序設(shè)計(jì)第三章JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)補(bǔ)充主要內(nèi)容3.3面向?qū)ο笕筇攸c(diǎn)3.4類的定義—方法重載3.5包package3.6final、this及其它3.3面向?qū)ο缶幊痰母拍?/p>
面向?qū)ο蟮娜筇攸c(diǎn):封裝、繼承、多態(tài)
1)封裝
封裝就是把對(duì)象的屬性和對(duì)這些屬性的操作封裝在一個(gè)單獨(dú)的數(shù)據(jù)結(jié)構(gòu)中,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),包含兩個(gè)含義:把對(duì)象的全部屬性和對(duì)屬性的全部操作結(jié)合在一起,形成不可分割的獨(dú)立單元(即對(duì)象)。信息隱蔽,即盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外形成一個(gè)邊界〔或者說形成一道屏障〕,只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。2)繼承繼承是一種由已有的類創(chuàng)建新類的機(jī)制。利用繼承,我們可以先創(chuàng)建一個(gè)擁有共有屬性的一般類,根據(jù)該一般類再創(chuàng)建具有特殊屬性的新類,新類繼承一般類的狀態(tài)和行為,并根據(jù)需要增加它自己的新的狀態(tài)和行為。由繼承而得到的類稱為子類,被繼承的類稱為父類或超類。Java不支持多重繼承,子類只能有一個(gè)父類。在Java編程語言中,通過繼承可利用已有的類,并擴(kuò)展它的屬性和方法。這個(gè)已有的類可以是語言本身提供的、其他程序員編寫的或程序員原來編寫的。繼承在Java中無所不在。3)多態(tài)
對(duì)象的多態(tài)是由封裝和繼承引出的面向?qū)ο蟪绦蛟O(shè)計(jì)語言的另一特征。主要體現(xiàn)在兩個(gè)方面:方法重載時(shí)實(shí)現(xiàn)的靜態(tài)多態(tài)和方法重載時(shí)實(shí)現(xiàn)的動(dòng)態(tài)多態(tài)。多態(tài)性使得我們的同一方法,可以有多種形式。另外父類中定義的屬性或方法被子類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為,同一個(gè)屬性或方法在父類及其各個(gè)子類中可以具有不同的語義。3.4類的定義—方法重載
方法重載(MethodOverloading)就是一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同,或者是返回值不同。這也是面向?qū)ο蟮某绦蛟O(shè)計(jì)中的奇妙之處,重載反映了大千世界的變化。從另外的含義上來講,重載也可以看成是同一個(gè)方法具有不同的版本,每個(gè)版本之間在參數(shù)特征和返回值方面有差別。重載是Java實(shí)現(xiàn)多態(tài)性的一種方式。當(dāng)調(diào)用一個(gè)重載方法時(shí),JVM自動(dòng)根據(jù)當(dāng)前對(duì)方法的調(diào)用形式在類的定義中匹配形式符合的成員方法,匹配成功后,執(zhí)行參數(shù)類型、數(shù)量均相同的成員方法。方法重載在Java的API類庫中得到大量的使用?!纠筷P(guān)于成員方法重載的例子//DemoOverload.javaclassDemo2{inta,b;intmethod(){//成員方法一
returna+b;}intmethod(intc){//成員方法二
returna+b+c;}intmethod(intc,intd){//成員方法三
returna+b+c+d;}Demo2(inta,intb){//構(gòu)造方法
this.a=a;this.b=b;}}【例】關(guān)于成員方法重載的例子publicclassDemoOverload{ publicstaticvoidmain(Stringargs[]){Demo2aDemo2=newDemo2(1,2);//實(shí)例化
inta=aDemo2.method();//調(diào)用成員方法一
System.out.println(a);intb=aDemo2.method(3);//調(diào)用成員方法二
System.out.println(b);intc=aDemo2.method(3,4);//調(diào)用成員方法三
System.out.println(c); }}上面程序的運(yùn)行結(jié)果為:3610【例】構(gòu)造方法重載,//ConstructionOverload.javaclassDemo{inta,b,c;//成員變量
publicDemo(){}//構(gòu)造方法1
publicDemo(inta){//構(gòu)造方法2 this.a=a;}publicDemo(inta,intb){//構(gòu)造方法3 this.a=a; this.b=b; }publicDemo(inta,intb,intc){//構(gòu)造方法4 this.a=a; this.b=b; this.c=c; }}publicclassConstructionOverload{ publicstaticvoidmain(Stringargs[]){//應(yīng)用第一種構(gòu)造方法
DemoaDemo=newDemo();System.out.println("方法一成員變量a:"+aDemo.a);System.out.println("方法一成員變量b:"+aDemo.b);System.out.println("方法一成員變量c:"+aDemo.c);//應(yīng)用第二種構(gòu)造方法
DemobDemo=newDemo(1);System.out.println("方法二成員變量a:"+bDemo.a);System.out.println("方法二成員變量b:"+bDemo.b);System.out.println("方法二成員變量c:"+bDemo.c);……
從上面的程序中可以看到構(gòu)造方法的重載。在該程序中,方法Demo()被定義了四次,每次參數(shù)不同。第一個(gè)構(gòu)造方法,沒有參數(shù),也沒有方法體,它和系統(tǒng)的缺省構(gòu)造方法是一致的。缺省的構(gòu)造方法確保每個(gè)Java類都至少有一個(gè)構(gòu)造方法。如果程序中給出了帶參數(shù)的構(gòu)造方法,而沒有給出缺省構(gòu)造方法,這時(shí)調(diào)用缺省構(gòu)造方法將導(dǎo)致錯(cuò)誤。在調(diào)用構(gòu)造方法時(shí),由于使用的是同一方法名,因此根據(jù)構(gòu)造方法的參數(shù)就能找到需要運(yùn)行的哪個(gè)方法。3.5包package1package語句2import語句由于Java編譯器為每個(gè)類生成一個(gè)字節(jié)碼文件,且文件名與類名相同,因此同名的類有可能發(fā)生沖突。為了解決這一問題,Java提供包來管理類名空間。包實(shí)際上提供了一種命名機(jī)制和可見性限制機(jī)制。Java虛擬機(jī)(JVM)決定如何創(chuàng)建和存儲(chǔ)包、子包以及相應(yīng)的編譯單元,并決定哪些頂層包名稱在特定的編譯中是可見的,以及決定哪些包是可訪問的。包可以存儲(chǔ)在在當(dāng)?shù)匚募到y(tǒng)中、分布式文件系統(tǒng)當(dāng)中,或者某種形式的數(shù)據(jù)庫中。Java系統(tǒng)必須支持至少一個(gè)無名包(也叫缺省包),一般為當(dāng)前目錄。在開發(fā)小的或者臨時(shí)的應(yīng)用程序或者剛剛開始開發(fā)時(shí),用無名包是非常方便的。package語句package語句作為Java源文件的第一條語句,指明該文件中定義的類所在的包。(若缺省該語句,則指定為無名包)。它的格式為:packagepkg1[.pkg2[.pkg3…]];Java編譯器把包對(duì)應(yīng)于文件系統(tǒng)的目錄。例如:名為myPackage的包中,所有類文件都將存儲(chǔ)在目錄myPackage下。同時(shí),package語句中,用“.”來指明目錄的層次,例如:
packagejava.awt.image;
package;packagemyPackage;
另外,包層次的根目錄path是由環(huán)境變量classpath來確定的。Java的JDK提供的包(也叫基礎(chǔ)類庫)包括:
Java.applet、java.awt、java.awt.datatransfer、java.awt.event、java.awt.image、java.beans、java.io、java.lang、java.lang.reflect、java.math、、java.rmi、java.security、java.sql、java.util等。每個(gè)包中都包含了許多有用的類和接口。用戶也可以定義自己的包來實(shí)現(xiàn)自己的應(yīng)用程序。Java的基礎(chǔ)類庫其實(shí)就是JDK安裝目錄下面jre\lib\rt.jar這個(gè)壓縮文件。學(xué)習(xí)基礎(chǔ)類庫就是學(xué)習(xí)rt.jar?;A(chǔ)類庫里面的類非常非常多。但是真正對(duì)于我們來說最核心的只有幾個(gè),例如java.lang.*;java.io.*;java.util.*;java.sql.*;等。import語句
為了能使用Java中已提供的類,我們需要用import語句來引入所需要的類。其格式為
importpackage1[.package2…].(classname|*);import語句其中package1[.package2…]表明包的層次,與package語句相同,它對(duì)應(yīng)于文件目錄,classname則指明所要引入的類,如果要從一個(gè)包中引入多個(gè)類,則可以用星號(hào)(*)來代替。例如:
importjava.util.Date;
importjava.util.*;
importjavax.swing.event.*;
為了能使用Java中已提供的類,我們需要用import語句來引入所需要的類。其格式為
importpackage1[.package2…].(classname|*);import語句其中package1[.package2…]表明包的層次,與package語句相同,它對(duì)應(yīng)于文件目錄,classname則指明所要引入的類,如果要從一個(gè)包中引入多個(gè)類,則可以用星號(hào)(*)來代替。例如:
importjava.util.Date;
importjava.util.*;
importjavax.swing.event.*;3.6final、this及其它1final關(guān)鍵字2this引用3super關(guān)鍵字4null關(guān)鍵字5java.lang.Object類介紹6遞歸方法7命令行參數(shù)的輸入8JAR文件的使用this引用關(guān)鍵字this是用來指向當(dāng)前對(duì)象或類實(shí)例的。例如:
publicclassMyDate{privateintday,month,year;publicvoidtomorrow(){this.day=this.day+1;}}這里,this.day指的是當(dāng)前對(duì)象的day字段?;蛘咴诔蓡T方法定義時(shí),我們使用的形式參數(shù)與成員變量名稱相同,這時(shí)我們要用到this。例如:classDemothis{inta;//成員變量
publicDemo(inta){ this.a=a;}}super關(guān)鍵字super關(guān)鍵字指明是對(duì)父類的引用。關(guān)于super可以參考后續(xù)章中關(guān)于繼承的章節(jié)。null關(guān)鍵字
在Java語言規(guī)范中,null表示類或者變量是空,不代表任何對(duì)象或?qū)嵗?。看下面的例?/p>
SomeClassaSomeClass=null;上面的語句中,只定義了類SomeClass的實(shí)例aSomeClass,但并沒有為之創(chuàng)建任何對(duì)象。java.lang.Object類介紹類java.lang.Object處于java開發(fā)環(huán)境的類層次的根部,其它所有的類都是直接或間接地繼承了此類。該類定義了一些最基本的狀態(tài)和行為。下面,我們介紹一些常用的方法java.lang.Object類介紹
instanceof運(yùn)算符:
instanceof運(yùn)算符是一個(gè)常用的運(yùn)算符,該運(yùn)算符是雙目運(yùn)算符,左面的操作元是一個(gè)對(duì)象,右面是一個(gè)類。當(dāng)左面的對(duì)象是右面的類創(chuàng)建的對(duì)象時(shí),該運(yùn)算符運(yùn)算的結(jié)果是true,否則是false。例如:if(b1instanceofButton)doDealB1();其中b1是對(duì)象,Button是一個(gè)類名。
【例】getClass和Instanceof方法的使用//ClassAndInstance.javaclassSubClass{}classSuperClassextendsSubClass{}publicclassClassAndInstance{publicstaticvoidmain(String[]args){test(newSubClass());test(newSuperClass());}staticvoidtest(Objectx){System.out.println("Testingxoftype"+x.getClass());System.out.println("xinstanceofSubClass"+(xinstanceofSubClass));System.out.println("xinstanceofSuperClass"+(xinstanceofSuperClass));}}程序運(yùn)行結(jié)果:如下:TestingxoftypeclassSubClassxinstanceofSubClasstruexinstanceofSuperClassfalseTestingxoftypeclassSuperClassxinstanceofSubClasstruexinstanceofSuperClasstrue命令行參數(shù)的輸入在C程序中main()作為一個(gè)程序的入口方法,在Java中也同樣利用這個(gè)方法來啟動(dòng)一個(gè)Java程序。main()使用一個(gè)字符串?dāng)?shù)組作為參數(shù),它表示啟動(dòng)Java這個(gè)程序時(shí)的命令行參數(shù),在下面的例子中我們展現(xiàn)了如何使用main的這個(gè)參數(shù)。【例】從命令行輸入?yún)?shù)//MainArgument.javapublicclassMainArgument{publicstaticvoidmain(String[]args){for(inti=0;i<args.length;i++){System.out.println(“Argumnet[”+i+”]:”+args[i]);}}程序運(yùn)行結(jié)果:
D:\user\chap03>javaMainArgumentOneTwoArgumnet[0]:OneArgumnet[1]:TwoJAR文件的使用
JAR文件就是JavaArchiveFile,是Java的一種文檔格式。JAR文件非常類似ZIP文件,準(zhǔn)確的說,它就是ZIP文件,所以可以叫它文件包。JAR文件與ZIP文件唯一的區(qū)別就是在JAR文件的內(nèi)容中,包含了一個(gè)META-INF/MANIFEST.MF文件,這個(gè)文件是在生成JAR文件的時(shí)候自動(dòng)創(chuàng)建的。可以使用jar.exe把一些文件壓縮成一個(gè)JAR文件,來發(fā)布我們的應(yīng)用程序。jar.exe是隨JDK安裝的,在JDK安裝目錄下的bin子目錄中,文件名為jar.exe。我們可以把java應(yīng)用程序中涉及到的類壓縮成一個(gè)JAR文件,比如Tom.jar,然后使用java解釋器使用參數(shù)-jar執(zhí)行這個(gè)壓縮文件,如下格式j(luò)ava-jarTom.jar或用鼠標(biāo)雙擊該文件,就可執(zhí)行這個(gè)壓縮文件JAR文件的制作步驟如下:首先,假設(shè)應(yīng)用程序中有兩個(gè)類A、B,其中A類是主類(其中包含了main()方法).1)首先用文本編輯器比如Windows下的記事本編寫一個(gè)清單文件Mymoon.mfManifest-Version:1.0Main-Class:ACreated-By:1.2.2(SunMicrosystemsInc.)比如,保存Mymoon.mf到D:\user\chap03.需要注意的是在編寫清單文件時(shí),在”Manifest-Version”和“1.0”之間,”Main-Class”和主類”A”之間
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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年滬科版九年級(jí)地理下冊(cè)階段測(cè)試試卷含答案
- 項(xiàng)目評(píng)估課課程設(shè)計(jì)
- 2025版高端電子產(chǎn)品一次性批量采購合同2篇
- 2024蘋果季節(jié)性收購與加工服務(wù)合同3篇
- 三方交易款項(xiàng)分配合同(2024年修訂版)版B版
- 重慶瀝青路面課程設(shè)計(jì)
- 二零二五年度電力工程合同索賠處理合同范本3篇
- 2024年靖西縣婦幼保健院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 二零二五年食堂設(shè)計(jì)與裝修服務(wù)承包合同2篇
- 2024年版權(quán)許可使用合同:影視作品授權(quán)播放平臺(tái)
- 《道路交通安全法》課件完整版
- 向女朋友認(rèn)錯(cuò)保證書范文
- 五分?jǐn)?shù)加法和減法(課件)-數(shù)學(xué)五年級(jí)下冊(cè)
- 2024年四川省綿陽市中考語文試卷(附真題答案)
- 設(shè)計(jì)材料與工藝課程 課件 第1章 產(chǎn)品設(shè)計(jì)材料與工藝概述
- 幼兒園反恐防暴技能培訓(xùn)內(nèi)容
- 食品企業(yè)質(zhì)檢員聘用合同
- 中醫(yī)診所內(nèi)外部審計(jì)制度
- 自然辯證法學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年國家危險(xiǎn)化學(xué)品經(jīng)營單位安全生產(chǎn)考試題庫(含答案)
- 護(hù)理員技能培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論