![java基礎(chǔ)培訓(xùn)資料_第1頁](http://file4.renrendoc.com/view/5dd59e2e0e51d7fb0dfbd13f38113d26/5dd59e2e0e51d7fb0dfbd13f38113d261.gif)
![java基礎(chǔ)培訓(xùn)資料_第2頁](http://file4.renrendoc.com/view/5dd59e2e0e51d7fb0dfbd13f38113d26/5dd59e2e0e51d7fb0dfbd13f38113d262.gif)
![java基礎(chǔ)培訓(xùn)資料_第3頁](http://file4.renrendoc.com/view/5dd59e2e0e51d7fb0dfbd13f38113d26/5dd59e2e0e51d7fb0dfbd13f38113d263.gif)
![java基礎(chǔ)培訓(xùn)資料_第4頁](http://file4.renrendoc.com/view/5dd59e2e0e51d7fb0dfbd13f38113d26/5dd59e2e0e51d7fb0dfbd13f38113d264.gif)
![java基礎(chǔ)培訓(xùn)資料_第5頁](http://file4.renrendoc.com/view/5dd59e2e0e51d7fb0dfbd13f38113d26/5dd59e2e0e51d7fb0dfbd13f38113d265.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java2SE講解第一頁,共八十一頁。Java基礎(chǔ)
1、語法基礎(chǔ)
2、面向?qū)ο? 3、JDBC4、異常課程內(nèi)容第二頁,共八十一頁。3OOP&JavaBase面向?qū)ο缶幊?ObjectOrientedProgramming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì))第三頁,共八十一頁。4Java學(xué)習(xí)路線JavaSE應(yīng)用程序設(shè)計(jì):面向?qū)ο螅?,繼承,接口,多態(tài),抽象與封裝)異常處理,I/O編程,集合框架,GUI程序設(shè)計(jì),多線程編程………數(shù)據(jù)庫的學(xué)習(xí):可以學(xué)習(xí)Oracle數(shù)據(jù)庫安裝配置、基本管理及開發(fā),使用OEM/SQLPlus,標(biāo)準(zhǔn)SQL,DML,DDL,函數(shù),事務(wù),約束,序列,索引,視圖,數(shù)據(jù)庫設(shè)計(jì),MySql,SQLServer的基本使用。JavaWeb應(yīng)用開發(fā): JDBC,JSP,Servlet,JavaBean,HTML,JavaScript,Session/cookie,MVC設(shè)計(jì)模式,Tomcat,Eclipse+MyEclipse.Java企業(yè)級應(yīng)用開發(fā):Struts,Hibernate,XML,J2EE/EJB,UML,Spring,AJAX第四頁,共八十一頁。5Java語言的發(fā)展歷史Java已經(jīng)成為當(dāng)今最為流行的軟件開發(fā)語言技術(shù)之一。第五頁,共八十一頁。6Java的平臺無關(guān)性Java是一種既面向?qū)ο笥挚梢钥缙脚_的語言,即:編寫一次,隨處運(yùn)行(Writeonce,Runanywhere);Java不僅適用于單機(jī)應(yīng)用程序和基于網(wǎng)絡(luò)的程序,也可用于創(chuàng)建消費(fèi)類設(shè)備的附件程序,如移動電話、掌上設(shè)備等。Java源程序代碼WindowsLinuxSolarisJVMJava虛擬機(jī)Java字節(jié)碼(可跨平臺)編譯運(yùn)行第六頁,共八十一頁。7Java虛擬機(jī)Java虛擬機(jī)(JavaVirtualMachine)是可運(yùn)行Java字節(jié)碼的虛擬計(jì)算機(jī)系統(tǒng);使用Java語言編寫的程序,實(shí)際上是運(yùn)行在JVM之上,而不是運(yùn)行在操作系統(tǒng)上;它有一個解釋器組件,可以實(shí)現(xiàn)Java字節(jié)碼和計(jì)算機(jī)操作系統(tǒng)之間的通信。用戶USER字節(jié)碼程序JVM(Java虛擬機(jī))操作系統(tǒng)硬件第七頁,共八十一頁。8Java虛擬機(jī)的運(yùn)行過程JIT代碼生成器.java源代碼文件.class字節(jié)碼文件編譯時運(yùn)行時硬件類加載器字節(jié)碼校驗(yàn)器解釋器第八頁,共八十一頁。Java發(fā)展史95年sun發(fā)布jdk1.098年jdk1.2后續(xù)jdk1.3、1.4、1.5目前jdk1.6、1.7現(xiàn)在SUN已推出Java2PlatformMicroEdition(Java2ME)Java2PlatformStandardEdition(Java2SE)Java2PlatformEnterpriseEdition(Java2EE)第九頁,共八十一頁。JDK目錄src.zip:核心API所有類的源文件bin:包含編譯器,解釋器等可執(zhí)行文件Demo:包含源代碼的程序示例
include:用于本地方法的文件jre:Java運(yùn)行環(huán)境lib:Java類庫第十頁,共八十一頁。Java開發(fā)環(huán)境的下載、安裝、配置下載:安裝(windows環(huán)境下)配置環(huán)境變量:path驗(yàn)證:》Java–version》Javac編譯源文件》Java執(zhí)行文件》編寫第一個Java文件:HelloWorld.java第十一頁,共八十一頁。第一個JavaApplication應(yīng)用程序打開記事本,新建一個文本文件,將文件名改為Hello.java,在文件中鍵入如下內(nèi)容并保存:publicclassHello{publicstaticvoidmain(String[]args){System.out.println("Helloworld!");}}第十二頁,共八十一頁。Java源程序擴(kuò)展名為.java的源文件使用記事本進(jìn)行編輯第十三頁,共八十一頁。使用javac編譯器編譯源文件接下來需要將源程序進(jìn)行編譯;進(jìn)入命令提示行,切換到源文件所在的目錄,執(zhí)行javac命令,使用javac編譯器編譯源文件;javac命令的格式是:javac完整的源文件名切換到源文件所在的目錄使用javac命令編譯源文件光標(biāo)閃爍表示語法無誤,順利通過編譯第十四頁,共八十一頁。.class(字節(jié)碼)文件順利通過編譯后將生成一個擴(kuò)展名為.class的字節(jié)碼文件(類描述文件)。擴(kuò)展名為.java的源文件通過編譯后生成的擴(kuò)展名為.class的字節(jié)碼文件第十五頁,共八十一頁。使用java解釋器運(yùn)行字節(jié)碼文件進(jìn)入命令提示行,在字節(jié)碼文件所在的目錄下,執(zhí)行java命令,使用java解釋器運(yùn)行字節(jié)碼文件;java命令的格式是:java類名稱請注意:這里只需要類名稱,而不是帶擴(kuò)展名的文件名。執(zhí)行java命令運(yùn)行字節(jié)碼文件程序運(yùn)行效果第十六頁,共八十一頁。分析程序關(guān)鍵字class用來定義一個類,Hello是類的名稱;在Java程序中,所有的語句都必須放在某個類中;整個類及其所有成員都包含在一對花括號中(即{和}之間),它們標(biāo)志著類定義塊的開始和結(jié)束。定義類的一般語法:
class
類名
{ …… }第十七頁,共八十一頁。分析程序3-2程序必須從main函數(shù)開始執(zhí)行;關(guān)鍵字public是訪問修飾符,用來控制類成員的可見范圍及作用域;關(guān)鍵字static允許在不創(chuàng)建類的實(shí)例的情況下,調(diào)用main函數(shù);關(guān)鍵字void用來說明main函數(shù)是沒有返回值的;args是字符串?dāng)?shù)組,用來從命令行接收參數(shù);main函數(shù)的一般形式如下:
public
static
voidmain(String[]args) { …… }第十八頁,共八十一頁。分析程序String[]是字符串類型的數(shù)組;在Java中,類名稱一般首字母大寫;使用System.out.println()將信息輸出到控制臺上,即打印出來。第十九頁,共八十一頁。
常用Java命令◆
編譯一個java源文件●
$javac<options><sourcefiles>◆運(yùn)行java可運(yùn)行文件●
$java[-options]class[args...]◆
生成java注釋文檔●
$javadoc[options][packagenames][sourcefiles][@files]例:javadoc-dD:\java\dos-sourcepathD:\java
abstractMoreType.javajavadoc-dc:\doc-sourcepathc:\src-subpackagescom.liigo(遞歸所有com.liigo子包里的java文件)◆
生成一個jar包●
$jar{ctxu}[vfm0Mi][jar-file][manifest-file][-Cdirectory]files
...例:jar-cvfaa.jar-Cnews\.(把news文件夾里的文件整個打包)第二十頁,共八十一頁。J2SE基礎(chǔ)語法標(biāo)識符數(shù)據(jù)類型數(shù)據(jù)類型的轉(zhuǎn)換(主講四類八種)運(yùn)算符條件語句、循環(huán)語句:if/for/while/do{}while()/break-continue/switch第二十一頁,共八十一頁。標(biāo)識符命名規(guī)范Java語言中,為各種變量、方法和類等起的名字稱為標(biāo)識(identifier)。Java標(biāo)識符的命名規(guī)則:應(yīng)以字母、下劃線(_)、美元符($),數(shù)字組成,但不能以數(shù)字開頭.Java標(biāo)識符大小寫敏感,長度無限制不能與關(guān)鍵字同名第二十二頁,共八十一頁。Java的基礎(chǔ)類型及常量Java的八種基礎(chǔ)類型:》整型:byte、short、int(默認(rèn))、long》字符型:char》浮點(diǎn)型:float、double(默認(rèn))》布爾型:boolean(一般用于程序的流程控制)注:Java采用Unicode編碼(全球語言統(tǒng)一編碼),每個字符占兩個字節(jié),因此一個Char類型的變量可以存放一個漢字(一個漢字占兩個字節(jié))第二十三頁,共八十一頁。Java的基礎(chǔ)類型及常量長度表示范圍byte1字節(jié),8位-27~27-1short2字節(jié),16位-215~215-1int4字節(jié),32位-231~231-1long8字節(jié),64位-263~263-1float4字節(jié),32位大約為+/-3.403E38double8字節(jié)64位大約+/-1.798E308第二十四頁,共八十一頁?;緮?shù)據(jù)類型轉(zhuǎn)換boolean類型不可轉(zhuǎn)換為其他類型。整型,字符型,浮點(diǎn)型的數(shù)據(jù)在混合運(yùn)算中相互轉(zhuǎn)換遵循如下原則:》容量小的類型自動轉(zhuǎn)換為容量大的,數(shù)據(jù)類型按容量大小排序如下:
>byte、short、char->int->long->float->double >bypt、short、char三者之間不互相轉(zhuǎn)換,三者參與運(yùn)算時先轉(zhuǎn)換為int類型》容量大的在轉(zhuǎn)換為容量小的時候要加強(qiáng)制轉(zhuǎn)換符,但可能造成精度降低或溢出》浮點(diǎn)型常量默認(rèn)值為double類型,整型常量默認(rèn)值為int類型成員變量、局部變量、變量作用域在Java中,變量一旦聲明,就應(yīng)對其進(jìn)行初始化TestConvert.java第二十五頁,共八十一頁。基本數(shù)據(jù)類型轉(zhuǎn)換
inti=1,j;
floatf1=0.1;
floatf2=123;
longl1=12345678;
longl2=8888888888;
doubled1=2e20,d2=20;
byteb1=1,b2=2,b3=129;j=j+10;i=i/10;i=i*0.1;
byteb=b1-b2;
floatf3=f1+f2;
floatf4=f1+f2*0.1;
doubled=d1*i+j;
floatf=(float)(d1*5+d2);第二十六頁,共八十一頁。Java數(shù)據(jù)類型劃分圖數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型類:class接口:interface浮點(diǎn)型:float、double整型:byte、short、int、long布爾型:boolean字符型:char數(shù)值型數(shù)組第二十七頁,共八十一頁。運(yùn)算符:operatorJava語言支持的運(yùn)算符:》算術(shù)運(yùn)算符:+,-,*,/,%,++,--》關(guān)系運(yùn)算符:>,<,>=,<=,==,!=》邏輯運(yùn)算符:!,&,|,^,&&,||》位運(yùn)算符:&,^,|,~,>>,<<,>>>基本不用》賦值運(yùn)算符:=》擴(kuò)展賦值運(yùn)算符:+=,-=,*=,/=》字符串連接運(yùn)算符:+
注:++(--)在前時先計(jì)算后取值在后時先取值后計(jì)算intx=2;System.out.println(1+++x+2+x);?x=2;System.out.println(1+x+++2+x);?第二十八頁,共八十一頁。邏輯運(yùn)算符邏輯運(yùn)算符:【!邏輯非】【&邏輯與】【|邏輯或】【^邏輯異與】【&&短路與】【||短路或】ab!aa&ba|ba^ba&&ba||btruetruefalsetruetruefalsetruetruetruefalsefalsefalsetruetruefalseTruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalsepublicstaticvoidmain(String[]args){booleana=true,b=false,c;c=!a;System.out.println(c);c=a^b;System.out.println(c);c=a|b;System.out.println(c);c=a&b;System.out.println(c);c=a||b;System.out.println(c);c=a&&b;System.out.println(c);}”^“邏輯異與:相同就為false,不同則為true|和||區(qū)別?&和&&區(qū)別?第二十九頁,共八十一頁。字符串連接符“+”除用于加法運(yùn)算外,還可以用于字符串的連接inti=55+21;Strings=“wang”+“hz”;“+”運(yùn)算符兩側(cè)的操作數(shù)只要有一個字符串(String)類型,系統(tǒng)就會自動將另一個操作數(shù)轉(zhuǎn)換為字符串類型,然后連接:
inti=12; System.out.println(“wanghz”+i);
輸出結(jié)果:wanghz12Strings1=10+2+”qing”Strings2=“qing”+10+2s1和s2的輸出結(jié)果會是什么?注:System.out.println(value);中的value無論是何類型,都會先轉(zhuǎn)為字符型,然后打印第三十頁,共八十一頁。if條件語句條件語句格式:if…if…else…if…elseif…if…elseif…elseif…else…只有一句要執(zhí)行的語句時{}可以省略但是建議不要去
if(表達(dá)式1){
語句塊1}elseif(表達(dá)式2){語句塊2}else{語句塊3}表達(dá)式語句塊falsetrueTestIf.java第三十一頁,共八十一頁。循環(huán)控制語句For循環(huán)控制語句格式:
for(表達(dá)式1;boolean類型的表達(dá)式2;表達(dá)式3){
語句塊
}注:continue和break區(qū)別?表達(dá)式1表達(dá)式2語句塊true表達(dá)式3falseTestFor.java課堂練習(xí)編寫程序,用以個for循環(huán)計(jì)算1!+2!+3!+……+10!的值,并打印出計(jì)算結(jié)果。OddSum.java第三十二頁,共八十一頁。while與do-whileWhile格式:
while(表達(dá)式){
語句塊
}do-while格式:
do{
語句塊
}while(表達(dá)式);表達(dá)式true語句塊false語句塊表達(dá)式truefalse兩者區(qū)別?WhileTest.java第三十三頁,共八十一頁。循環(huán)語句舉例//輸出1—100內(nèi)前5個能被3整除的數(shù)public
classTest{public
static
voidmain(String[]args){intnum=0,i=1;while(i<=100){if(i%3==0){System.out.print(i+"");num++;}if(num==5){
break;}i++;}}}//輸出101—200內(nèi)的質(zhì)數(shù)public
classTest{public
static
voidmain(String[]args){for(inti=101;i<200;i+=2){booleanf=true;for(intj=2;j<i;j++){if(i%j==0){f=false;
break;}}if(!f){
continue;}System.out.print(i+"");}}}第三十四頁,共八十一頁。Switch條件控制Switch格式:
switch(表達(dá)式){case表達(dá)式1:
語句塊1break;case表達(dá)式2:
語句塊2break;default:(可有可無)
語句塊3break;}小心case穿透,推薦使用break語句多個case可以合并到一起default可以省略,但不推薦省略注:表達(dá)式必須是int類型的(byte,short,char,int),break語句穿透問題SwitchTest.java第三十五頁,共八十一頁。方法Java中的方法類似于其他語言的函數(shù),是一段用來完成特定功能的代碼片段,聲明格式:[修飾符1修飾符2..]返回值類型方法名(形式參數(shù)列表){Java語句}Sample:publicStringgetName(Stringname){return“name=”+name;}形式參數(shù):在方法被調(diào)用時,用于接收外界輸入的數(shù)據(jù)。實(shí)參:調(diào)用方法時,實(shí)際傳給方法的數(shù)據(jù)。返回值:方法在執(zhí)行完畢后返還給調(diào)用它的環(huán)境的數(shù)據(jù)。返回值類型:事先約定的返回值的數(shù)據(jù)類型,如無返回值,必須給出返回值類型voidJava語言中使用下述形式調(diào)用方法:對象名.方法名(實(shí)參列表)實(shí)參的數(shù)目、數(shù)據(jù)類型和次序必須和所調(diào)用方法聲明的形參列表匹配return語句終止方法的運(yùn)行,并指定要返回的數(shù)據(jù)返回值類型:事先約定的返回值的數(shù)據(jù)類型,如無返回值,必須給出返回值類型voidTestFuncation.java第三十六頁,共八十一頁?;菊Z法總結(jié)標(biāo)識符數(shù)據(jù)類型數(shù)據(jù)類型的轉(zhuǎn)換(主講四類八種)運(yùn)算符條件語句、循環(huán)語句:if/for/while/do{}while()/break-continue/switch第三十七頁,共八十一頁。面向?qū)ο箢惻c對象對象在內(nèi)存中的解析方法的重載(overload)關(guān)鍵字:this、static、以及他們與類之間的關(guān)系package和import語句繼承訪問控制符多態(tài)第三十八頁,共八十一頁。類與對象類:具有相同屬性和功能的一類事物(屬性和方法的集合)。抽象:對具有相同屬性和方法的一類事物的描述過程就叫抽象,抽象的結(jié)果就是類。對象:類的一個實(shí)例,對象是組成類的元素。第三十九頁,共八十一頁。類的定義類定義的格式:[修飾符]class類名
{
類體代碼
}類的定義主要有兩部分組成:成員變量和方法//用class關(guān)鍵字定義類,例如:classPerson{//成員變量定義
privateintid=1;privateintage=20;//定義方法
publicintgetId(){returnid;}
publicintgetAge(){returnage;}publicvoidsetAge(inti){age=i;}}第四十頁,共八十一頁。對象的創(chuàng)建Java語言中除基本數(shù)據(jù)類型之外的變量類型都稱之為引用類型。Java中的對象是通過引用對其操作的。例如://聲明了一個Person類型的變量,但并沒//有使它指向一個對象。Personp;//使用new語句創(chuàng)建了一個Person類型的對象,并用p指向它,以后可以通過p完成對它的操作。p=newPerson();p=nullstackheapPersonp;p=newPerson();pid:1age:20第四十一頁,共八十一頁。方法的調(diào)用
classPerson{//成員變量定義
privateintid;privateintage=20;//定義方法
publicintgetId(){returnid;}
publicintgetAge(){returnage;}publicvoidsetAge(inti){age=i;}
}publicclassTest{publicstaticvoidmain(String[]args){
Personp=newPerson();p.setAge(34);intage=p.getAge();System.out.println(age);}}使用對象引用.方法名(參數(shù)列表)來調(diào)用對象的方法。第四十二頁,共八十一頁。封裝性類的封裝性:即不能讓外面的類隨意修改一個類的成員變量在定義一個類的成員(包括變量和方法),使用private關(guān)鍵字說明這個成員的訪問權(quán)限,只能被這個類的其他成員方法調(diào)用,而不能被其他的類中的方法所調(diào)用;
為實(shí)現(xiàn)封裝性,常將類的成員變量聲明為private,再通過public的方法來對這個變量進(jìn)行訪問。對一個變量的操作,一般都有
讀取和賦值操作,我們一般定義兩個方法來實(shí)現(xiàn)這兩種操作,即:getXxx()與setXxx();
一個類就是一個模塊,我們應(yīng)該讓模塊僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其他的一切內(nèi)容。再進(jìn)行程序設(shè)計(jì)時,應(yīng)盡量避免一個模塊直接修改或操作另一個模塊的數(shù)據(jù),模塊設(shè)計(jì)追求強(qiáng)內(nèi)聚(許多功能盡量在類的內(nèi)部獨(dú)立完成,不讓外面干預(yù)),弱耦合(提供給外部盡量少的方法調(diào)用)。第四十三頁,共八十一頁。構(gòu)造方法類內(nèi)部一種特殊的方法,創(chuàng)建對象時所調(diào)用的方法。使用new+構(gòu)造方法名創(chuàng)建一個新的對象。構(gòu)造方法是定義在java類中的一個用來初始化對象的方法。構(gòu)造方法沒有返回值類型,它與其他的方法在此處不同構(gòu)造方法的方法名與類名完全相同classPerson{//成員變量定義intid;intage=20;Person(inti,intn){
id=i;age=n;
}第四十四頁,共八十一頁。構(gòu)造方法創(chuàng)建對象時,使用構(gòu)造方法初始化對象的成員變量。
publicclassTest{publicstaticvoidmain(String[]args){//創(chuàng)建對象Persontom=newPerson(1,25);Personjack=newPerson(2,20);}}tomstackjack125220heap第四十五頁,共八十一頁。構(gòu)造方法每個類都至少有一個構(gòu)造方法,如果我們沒有顯示的聲明,JVM會在加載該類時為其添加一個public的無參的構(gòu)造方法:類名(){}例如:classPoint{intx;inty;}….main…{Pointp=newPoint();}第四十六頁,共八十一頁。課堂練習(xí)定義一個點(diǎn)(point)類用來表示三維空間中的點(diǎn)(有三個坐標(biāo))。要求如下:1.可以生成具有特定坐標(biāo)的點(diǎn)對象2.提供可以設(shè)置三個坐標(biāo)的方法3.提供可以計(jì)算該”點(diǎn)”到原點(diǎn)距離平方的方法4.編寫程序驗(yàn)證上面三點(diǎn)TestPoint.java第四十七頁,共八十一頁。方法的重載方法的重載是指一個類中可以定義有相同的名字,但參數(shù)不同的多個方法。調(diào)用時會根據(jù)不同的參數(shù)表選擇對應(yīng)的方法。判斷方法重載的依據(jù):1、在同一個類內(nèi)2、方法名相同3、參數(shù)的類型不同,或者參數(shù)的個數(shù)不同,或者參數(shù)的排列順序不同4、方法的返回值的不同不能作為判斷方法重載的依據(jù),僅僅是返回值的不同,就造成了方法的重名,會報(bào)錯。TestOverLoad.java第四十八頁,共八十一頁。構(gòu)造方法的重載與普通方法一樣,構(gòu)造方法也可以重載例如:Person類的構(gòu)造方法classPerson{intid;intage;publicPerson(){ id=1; age=20}publicPerson(intm){ id=m; age=20;}publicPerson(intm,intn){ id=m; age=n;}}課堂練習(xí):利用Person類,編寫程序,分別用三種構(gòu)造方法創(chuàng)建三個Person對象,如下圖所示:p1p2p3120220536第四十九頁,共八十一頁。關(guān)鍵字this在類的方法中使用。This:當(dāng)前對象的一個引用,指向它自己,在類的內(nèi)部使用。有時使用this可以處理方法中成員變量和參數(shù)重名的情況。
TestThis.javathisheap第五十頁,共八十一頁。關(guān)鍵字static
在類中,用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在第一次使用時被初始化,對于該類的所有對象來說,static成員變量該變量只有一份,保存在內(nèi)存的datasegment中。用static聲明的方法,表示該方法為靜態(tài)方法,在調(diào)用方法時,不會將對象的引用傳遞給它,所以在static方法中,不能直接調(diào)用非靜態(tài)的成員變量或非靜態(tài)的方法??梢灾苯油ㄟ^類名.靜態(tài)方法名調(diào)用。可以通過對象、引用或類名(不需要實(shí)例化)訪問靜態(tài)成員。TestStatic.javaTestFuncation.java第五十一頁,共八十一頁。package和import語句為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類的命名沖突問題,java引入包(package)機(jī)制。package語句作為java源文件的第一條語句,指定該文件中定義的類所在的包。它的格式為:packagepkg1[.pkg2[.pkg3…]];Java編譯器把包對應(yīng)于文件系統(tǒng)的目錄管理,package語句中,用‘.’來指明包的層次,例如使用語句:packagecom.test;則該文件中所有的類位于.\com\test目錄下TestPackage.java第五十二頁,共八十一頁。繼承子類通過繼承獲得基類的所有屬性(包括私有的)及方法。在創(chuàng)建子類對象時,可以通過子類對象調(diào)用基類的方法和訪問除去私有的一切成員變量。繼承提高了代碼的復(fù)用性。子類可以擴(kuò)展基類的方法及屬性。子類對象的創(chuàng)建伴隨著父類對象的創(chuàng)建TestExtends.java(內(nèi)存分析)ageageAnimalcolorCat第五十三頁,共八十一頁。訪問權(quán)限控制訪問控制本類同一包中的類其他包中子類其他包中的類publicprotected×缺省××private×××Java權(quán)限修飾符public、private、protected置于類的成員定義前,用來限定其它對象對該類對象成員的訪問權(quán)限。
對于class的權(quán)限修飾只可以用public和default。public類可以在任何地方被訪問。default類只可以被同一個包內(nèi)的類訪問。
TestAccess.java第五十四頁,共八十一頁。繼承中的權(quán)限控制classParent{privateintn_private=1;intn_default=2;protectedintn_protected=3;publicintn_public=4;}classChildextendsParent{publicvoidf(){
n_private=10;//errorn_default=20;n_protected=30;n_public=40;}}第五十五頁,共八十一頁。課堂練習(xí)編寫一個Computer
類,提供加(add)、減(reduce)、乘(sheng)、除(div)方法。SubComputer類,繼承Computer
類,提供取余(mod)、求平方(square)、立方(cube)方法。TestComputer.java第五十六頁,共八十一頁。方法的重寫在子類中可以根據(jù)需要對從基類中繼承來的方法進(jìn)行重寫。重寫方法必須和被重寫方法具有相同方法名稱、參數(shù)列表和返回類型。重寫方法的訪問權(quán)限不能比被重寫方法的低。TestOverride.java第五十七頁,共八十一頁。super關(guān)鍵字在子類中可以使用super關(guān)鍵字來引用基類的成分,例如:classFatherClass{publicintvalue;publicvoidf(){value=100;System.out.println(“FatherClass.value=”+value);}}classChildClassextendsFatherClass{publicintvalue;publicvoidf(){super.f();//這里的super可以省略嗎?value=200;System.out.println(“ChildClass.value=”+value);System.out.println(“super.value=”+super.value);}}………….main………….ChildClasscc=newChildClass();s.f();第五十八頁,共八十一頁。thissupervalue:200value:100cc第五十九頁,共八十一頁。super關(guān)鍵字classPerson{ publicstaticvoidprt(Strings) {System.out.println(s);} Person(){prt("APerson.");} Person(Stringname){prt("Apersonnameis:"+name);}}publicclassChineseextendsPerson{ Chinese(){
super();//調(diào)用父類構(gòu)造函數(shù)(1),必須寫在第一行
prt("Achinese.");} Chinese(Stringname){
super(name);//調(diào)用父類具有相同形參的構(gòu)造函數(shù)(2)
prt("hisnameis:"+name);} Chinese(Stringname,intage){ this(name);//調(diào)用當(dāng)前具有相同形參的構(gòu)造函數(shù)(3)
prt("hisageis:"+age);} publicstaticvoidmain(String[]args){ Chinesecn=newChinese(); cn=newChinese("kevin"); cn=newChinese("kevin",22);}}第六十頁,共八十一頁。課堂練習(xí)創(chuàng)建一個僅有一個非缺省構(gòu)造器的基類,并創(chuàng)建一個帶有缺省構(gòu)造器和非缺省構(gòu)造器的導(dǎo)出類。在導(dǎo)出類的構(gòu)造器中調(diào)用基類的構(gòu)造器。第六十一頁,共八十一頁。關(guān)鍵字finalfinal修飾類,表示該類是不能被繼承的;final修飾成員變量,表示該變量為常量,值不可以被修改,變量名一般采用大寫字母,字母之間通過下劃線連接;final修飾方法,表示該方法不能被重寫,但是可以使用一般final和static一起用,當(dāng)類被多次創(chuàng)建時,只創(chuàng)建一次變量,可以節(jié)約內(nèi)存。第六十二頁,共八十一頁。classAnimal{
publicStringname;Animal(Stringname){
=name;}}classCatextendsAnimal{
publicStringeyesColor;Cat(Stringn,Stringc){
super(n);
this.eyesColor=c;}}classDogextendsAnimal{
publicStringfurColor;Dog(Stringn,Stringc){
super(n);
this.furColor=c;}}多態(tài)第六十三頁,共八十一頁。publicclassTest{ publicstaticvoidmain(String[]args) { Testtest=newTest(); Animala=newAnimal("name"); Catc=newCat("catName","blue"); Dogd=newDog("dogName","black"); test.f(a); test.f(c); test.f(d); }publicvoidf(Animala){ System.out.println("name:"+); if(ainstanceofCat){ Catcat=(Cat)a; System.out.println(""+cat.eyesColor+"eyes"); }elseif(ainstanceofDog){ Dogdog=(Dog)a; System.out.println(""+dog.furColor+"fur"); } }}多態(tài)第六十四頁,共八十一頁。多態(tài)TestPolymoph/Test.java多態(tài)是指在執(zhí)行期間(而非編譯期)判斷所引用對象的實(shí)際類型,根據(jù)其實(shí)際的類型調(diào)用其相應(yīng)的方法。上面例子中,根據(jù)Lady對象的成員變量Pet所引用的不同的實(shí)際類型而調(diào)用相應(yīng)的enjoy方法。classBirdextendsAnimal{ privateStringfeatherColor; Bird(Stringn,Stringf){ super(n); this.featherColor=f; } publicvoidenjoy(){ System.out.println("鳥叫聲........."); }}publicclassTest{ publicstaticvoidmain(String[]args){Birdb=newBird(“birdname”,”green”); Ladyl3=newLady("l3",b); l3.myPetEnjoy(); }}1.要有繼承2.要有重寫3.父類引用指向子類對象第六十五頁,共八十一頁。課堂練習(xí)分析上面的程序,體會“多態(tài)特性”對于系統(tǒng)可擴(kuò)充性的重要性。利用多態(tài)性編程,實(shí)現(xiàn)求三角形,正方形和圓形面積。方法:抽象出一個共享父類,定義一函數(shù)為求面積的公共界面,再重新定義各形狀的求面積函數(shù)。在主類中創(chuàng)建不同類的對象,并求得不同形狀的面積。MianJi.java第六十六頁,共八十一頁。抽象類用abstract關(guān)鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾方法時,該方法叫做抽象方法。含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫。抽象類不能被實(shí)例化。抽象方法只需聲明,不需要實(shí)現(xiàn)。TestAbstract.javaabstract
classAnimal{
privateStringname;Animal(Stringname){
=name;}
abstract
public
voidenjoy();}classCatextendsAnimal{
private
String
eyesColor;Cat(Stringn,Stringc){
super(n);
this.eyesColor=c;}
public
voidenjoy(){System.out.println("貓叫聲.........");}}第六十七頁,共八十一頁。課堂練習(xí)創(chuàng)建一個基類,包含抽象方法print(),并在導(dǎo)出類中將其實(shí)現(xiàn)。重載的版本中會打印基類中定義的某個整型變量的值。在定義該變量時,請賦予非零值。在基類的構(gòu)造器中,可以調(diào)用這個方法?,F(xiàn)在,在main()方法中,創(chuàng)建一個導(dǎo)出類對象,然后調(diào)用它的print()方法。解釋發(fā)生的情形。
第六十八頁,共八十一頁。接口接口是(interface)是抽象方法和常量值的定義的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實(shí)現(xiàn)。接口定義舉例:publicinterfacerunner{intid=1; publicvoidstart(); publicvoidrun(); publicvoidstop();}第六十九頁,共八十一頁。接口特性多個無關(guān)的類可以實(shí)現(xiàn)同一個接口。接口不能實(shí)例化。一個類可以實(shí)現(xiàn)多個無關(guān)的接口。定義java類的語法格式:
<modifier>class<name>[extends<superclass>][implements<interface>[,<interface>]…]{…..}接口中聲明屬性默認(rèn)為publicstaticfinal的,也只能是publicstaticfinal的;即使不寫,在編譯時會為其加上public
staticfinal。接口中只能定義抽象方法,而且這些方法默認(rèn)為public的,也只能是public的;接口可以繼承其他的接口,并添加新的屬性和方法。第七十頁,共八十一頁。interfaceSinger{public
voidsing();public
voidsleep();}classStudentimplementsSinger{privateStringname;Student(Stringname){=name;}publicStringgetName(){returnname;}public
voidstudy(){System.out.println("studying");}public
voidsing(){System.out.println("studentissinging");}public
voidsleep(){System.out.println("studentissleeping");}}接口舉例第七十一頁,共八十一頁。interfacePainter{public
voidpaint();public
voideat();}classTeacherimplementsSinger,Painter{privateStringname;Teacher(Stringname){=name;}publicStringgetName(){returnname;}public
voidteach(){System.out.println("teaching");}public
voidsing(){System.out.println("teacherissinging");}public
voidsleep(){System.out.println("teacherissleeping");}public
voidpaint(){System.out.println("teacherispainting");}public
voideat(){System.out.println("teacheriseating");}}第七十二頁,共八十一頁。public
classTest{public
static
voidmain(String[]args){Singers1=newStudent("le");s1.sing();s1.sleep();Singers2=newTeacher("steven");
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中小學(xué)學(xué)生校園意外傷害賠償合同范本
- 國內(nèi)運(yùn)輸代理合同模板
- 銷售保健品合同范本
- 設(shè)備試用協(xié)議合同
- 個人資金借貸合同范本
- 個人房屋按揭貸款合同范本
- 個人住房擔(dān)保借款合同細(xì)則
- 個人房產(chǎn)抵押借款合同三方協(xié)議書
- 臨時雇傭合同書
- 專業(yè)水暖電安裝施工合同簽訂
- 2025年?duì)I口職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 七年級歷史下冊第2課唐朝建立與貞觀之治
- 8.3+區(qū)域性國際組織+課件高中政治統(tǒng)編版選擇性必修一當(dāng)代國際政治與經(jīng)濟(jì)
- 2025年國網(wǎng)陜西省電力限公司高校畢業(yè)生招聘1100人(第二批)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《深度學(xué)習(xí)的7種有力策略》
- 2025年潞安化工集團(tuán)招聘筆試參考題庫含答案解析
- 李四光《看看我們的地球》原文閱讀
- 幼兒園一日生活安全課件
- 《認(rèn)罪認(rèn)罰案件被追訴人反悔應(yīng)對機(jī)制研究》
- 多旋翼無人飛行器嵌入式飛控開發(fā)實(shí)戰(zhàn)-基于STM32系列微控制器的代碼實(shí)現(xiàn)
- 國家開放大學(xué)護(hù)理社會實(shí)踐報(bào)告
評論
0/150
提交評論