java編程思想教案-復習大綱_第1頁
java編程思想教案-復習大綱_第2頁
java編程思想教案-復習大綱_第3頁
java編程思想教案-復習大綱_第4頁
java編程思想教案-復習大綱_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

java編程思想教案-復習大綱Java程序設計考試范圍第一章第二章第三章第四章第五章第六章第七章第八章第九章第十章第十一章第十四章第十五章XXXX2Java程序設計考試題型選擇題共20分,每小題2分填空題(共20分,每空2分)判斷題(共10分,每小題2分)程序閱讀題(共30分,4題)編程題(20分,1題)3面向對象三大特征封裝隱藏實現(xiàn)細節(jié),使得代碼模塊化,簡單拿來,簡單拿去繼承代碼重用多態(tài)分離了“做什么”和“怎么做”45多態(tài)分離“做什么”(吃中午飯)和“怎么做”(吃啥中午飯);消除類型之間的耦合關系;多態(tài)方法調(diào)用允許一種類型表現(xiàn)出與其他相似類型的區(qū)別這種區(qū)別根據(jù)方法行為的不同而表現(xiàn)出來;5JAVA運行*.java*.classjavacjava6源代碼格式package包名;importjava.swing.*;;*能夠導入swing目錄下的所有文件但不包括子目錄下的文件。假如要用到swing/event目錄下的文件時,必須要加上importjava.swing.event.*才行。類定義方式:權限(可省略)static/final/abstract(可沒有)class(必須有)類名(必須有)方法定義方式:權限(可省略)static/final/abstract(可沒有)返回類型(必須有)方法名(必須有)(參數(shù)列表(可沒有));7聲明對象也叫實例化語法:類名對象名=

new類名(參數(shù)列表)第一步:類名對象名,賦予對象引用;第二步:對象名=

new類名(參數(shù)列表),獲取該對象的一個實際物理副本并把它賦給那個變量;new為對象動態(tài)分配內(nèi)存;一切都是引用用引用操作對象8大家學習辛苦了,還是要堅持繼續(xù)保持安靜9Java源代碼(2)10Java的對象交換變量:基本數(shù)據(jù)類型和對象形式參數(shù):基本數(shù)據(jù)類型和對象11Java源代碼(3)b1和b2指向同一個對象12Java源代碼(4)classEmployee{ privateintsalary=0; privateStringname; publicvoidEmployee(Stringname,intsalary){ =name; this.salary=salary; }}13Java源代碼(5)14classSwap1{intcount=0;}publicclassTestForSwap1{publicstaticvoidmain(String[]args){

Swap1s1=newSwap1();

Swap1s2=newSwap1();

s1.count=5;

s2.count=10;

System.out.println("s1.count:"+s1.count+"and"+"s2.count:"+s2.count);

s1=s2;

System.out.println("s1.count:"+s1.count+"and"+"s2.count:"+s2.count);

s2.count=30;

System.out.println("s1.count:"+s1.count+"and"+"s2.count:"+s2.count);

}}s1.count:5ands2.count:10s1.count:10ands2.count:10s1.count:30ands2.count:3015x:10andy:20a:10andb:20a:20andb:20a:20andb:20x:10andy:20publicclassTestForSwap2{voidswapF(inta,intb){System.out.println("a:"+a+"and"+"b:"+b);a=b;System.out.println("a:"+a+"and"+"b:"+b);intc=0;c=a;a=b;b=c;System.out.println("a:"+a+"and"+"b:"+b);}publicstaticvoidmain(String[]args){TestForSwap2t2=newTestForSwap2();intx=10;inty=20;

System.out.println("x:"+x+"and"+"y:"+y);t2.swapF(x,y);System.out.println("x:"+x+"and"+"y:"+y);}}16x:10andy:20a:10andb:20a:20andb:10x:10andy:20publicclassTestForSwap3{voidswapF(inta,intb){System.out.println("a:"+a+"and"+"b:"+b);a=20;b=10;System.out.println("a:"+a+"and"+"b:"+b);}publicstaticvoidmain(String[]args){TestForSwap3t2=newTestForSwap3();intx=10;inty=20;System.out.println("x:"+x+"and"+"y:"+y);t2.swapF(x,y);System.out.println("x:"+x+"and"+"y:"+y);}}17s1:10ands2:20a:10andb:20a:20andb:20s1:10ands2:20classSwap2{Intcount=0;}publicclassTestForSwap4{voidswapF(Swap2a,Swap2b){System.out.println("a:"+a.count+"and"+"b:"+b.count);a=b;System.out.println("a:"+a.count+"and"+"b:"+b.count);}publicstaticvoidmain(String[]args){TestForSwap4t2=newTestForSwap4();Swap2s1=newSwap2();Swap2s2=newSwap2();s1.count=10;s2.count=20;System.out.println("s1:"+s1.count+"and"+"s2:"+s2.count);t2.swapF(s1,s2);System.out.println("s1:"+s1.count+"and"+"s2:"+s2.count);}}18s1:10ands2:20a:10andb:20a:20andb:20s1:20ands2:20classSwap3{Intcount=0;}publicclassTestForSwap5{voidswapF(Swap3a,Swap3b){System.out.println("a:"+a.count+"and"+"b:"+b.count);a.count=b.count;System.out.println("a:"+a.count+"and"+"b:"+b.count);}publicstaticvoidmain(String[]args){TestForSwap5t2=newTestForSwap5();Swap3s1=newSwap3();Swap3s2=newSwap3();s1.count=10;s2.count=20;System.out.println("s1:"+s1.count+"and"+"s2:"+s2.count);t2.swapF(s1,s2);System.out.println("s1:"+s1.count+"and"+"s2:"+s2.count);}}19基本語法(1-3)20基本語法(1-4)21classBase{publicstaticvoidtest(Stringstr){str="A";}publicstaticvoidmain(String[]args){Stringstring="B";test(string);System.out.println(string);}}P412223抽象類/接口是提取多種具有相似性的具體事物的共同特征而產(chǎn)生的,不是描述一類具體事物。24Super關鍵字指代基類的數(shù)據(jù)或方法;基類和導出類有相同方法時;super.方法名()基類的構造器是有參的;Super();2526繼承(2)26static不用聲明對象,僅通過類本身就能調(diào)用靜態(tài)方法、靜態(tài)域。27static+final意味著只占據(jù)一個不能改變的存儲空間,變量名全部大寫,并用下劃線分割各個單詞;private方法都隱式地指定為final。28訪問權限控制public

>protected>包權限>private包權限關鍵字就是缺??;classTestClass{}29訪問權限控制(2)Eclipse/JustText/TestForImport2.javaEclipse/TestForImport.java30類的種類繼承基類vs導出類一個導出類能否extends多個基類???抽象類接口一個接口能否extends多個接口???一個類能否implements多個接口???31初始化初始化順序編譯時先初始化主類的基類的靜態(tài)定義(包括靜態(tài)塊),再初始化主類的;執(zhí)行主類的main方法;聲明主類對象先依次初始化主類的基類的非靜態(tài)定義和構造器,再初始化主類的;聲明其他類對象先依次初始化其他類的基類的靜態(tài)定義、非靜態(tài)定義和構造器,再初始化其他類;323333重寫(或覆蓋overriding)與重載(overloading)重寫基類與導出類方法的參數(shù)完全相同重載一個類中方法名一樣,參數(shù)不一樣????基類與導出類間有沒有重載34重寫(或覆蓋overriding)與重載(overloading)(2)Eclipse/tij_code/TIJ4_CODE/reusing/Lisa.javapackagereusing;classLisaextendsHomer{@Overridevoiddoh(Milhousem){System.out.println("");}@Overridechardoh(charc){return('1');}}35前期綁定v.s.后期綁定綁定:將一個方法調(diào)用同另一個方法主題關聯(lián)起來;static方法和final方法(private方法屬于final方法);可以編寫只與基類打交道的程序代碼,即,發(fā)送消息給某個對象,讓該對象去斷定該如何做事情;36內(nèi)部類一種特殊的繼承關系;語法把類的定義置于外圍類的里面;37局部內(nèi)部類定義在方法的作用域38局部內(nèi)部類(2)39局部內(nèi)部類(3)局部類不能用public或private訪問說明符進行聲明。它的作用域被限定在聲明該局部類的塊中。局部類有個優(yōu)勢,即對外部世界可以完全地隱藏起來。不僅能訪問它們外圍類的域,還可以訪問局部變量。40外圍類的局部變量如果要被內(nèi)部類使用,必須是final變量。41匿名內(nèi)部類實例初始化實現(xiàn)構造器效果4243匿名內(nèi)部類是否向上轉型?????????????43publicclassAnonymousConstructor{

publicstaticBasegetBase(inti){

returnnewBase(i){

{print("Insideinstanceinitializer");}//構造器效果

publicvoidf(){

print("Inanonymousf()");

}

};

}44publicclassTest{publicstaticvoidmain(String[]args){newTest().doSomeThing(1);}publicvoiddoSomeThing(intattribute){newThread(){publicvoidrun(){do{System.out.println(attribute);if(attribute<3)attribute++;}while(attribute<5);}}.start();}}45靜態(tài)內(nèi)部類vs非靜態(tài)內(nèi)部類

靜態(tài)內(nèi)部類(嵌套類)對象生成:new外圍類.內(nèi)部類();必須通過對象來訪問外圍類的數(shù)據(jù);非靜態(tài)內(nèi)部類對象生成:外圍類對象.new內(nèi)部類();可以直接訪問訪問外圍類的數(shù)據(jù);4647內(nèi)部類對象的創(chuàng)建????????????47484849內(nèi)部類對象的創(chuàng)建內(nèi)部類對象的創(chuàng)建必須先創(chuàng)建外部類對象外部類的方法同一個名稱不能聲明兩個局部變量,或一個局部變量和一個實例變量;外部類.new495050內(nèi)部類總結一個內(nèi)部類對象可以訪問創(chuàng)建它的外部類對象的內(nèi)容,甚至包括私有變量!內(nèi)部類具有屬性一樣的修飾符,所以可以像屬性一樣被封裝成private;內(nèi)部類的名稱必須與所嵌套的類不同;靜態(tài)內(nèi)部類(嵌套類):要創(chuàng)建嵌套類的對象,并不需要其外圍類的對象;靜態(tài)內(nèi)部類中可以定義靜態(tài)或者非靜態(tài)的成員。靜態(tài)內(nèi)部類只能訪問外圍類的靜態(tài)成員(包括靜態(tài)變量和靜態(tài)方法),不能從嵌套類的對象中訪問非靜態(tài)的外圍類對象(包括非靜態(tài)變量和非靜態(tài)方法)。51內(nèi)部類總結(2)匿名內(nèi)部類就是沒有名字的內(nèi)部類。什么情況下需要使用匿名內(nèi)部類?如果滿足下面的一些條件,使用匿名內(nèi)部類是比較合適的:·只用到類的一個實例。類在定義后馬上用到。類非常?。⊿UN推薦是在4行代碼以下)給類命名并不會導致你的代碼更容易被理解。方法內(nèi)部類不可以用private,public,protected修飾,只能用final和abstract修飾;內(nèi)部類可以定義為abstract。52內(nèi)部類總結(3)在使用匿名內(nèi)部類時,要記住以下幾個原則:匿名內(nèi)部類不能有構造方法。由于構造器的名字必須與類名相同,匿名類沒有類名,所以,匿名類不能有構造器。匿名內(nèi)部類不能定義任何靜態(tài)成員、方法和類。匿名內(nèi)部類不能是public,protected,private,static。只能創(chuàng)建匿名內(nèi)部類的一個實例。一個匿名內(nèi)部類一定是在new的后面,用其隱含實現(xiàn)一個接口或實現(xiàn)一個類。因匿名內(nèi)部類為局部內(nèi)部類,所以局部內(nèi)部類的所有限制都對其生效。5354內(nèi)部類的繼承//:innerclasses/InheritInner.javapackageinnerclasses;/*AddedbyEclipse.py*///Inheritinganinnerclass.classWithInner{

classInner{}}publicclassInheritInnerextendsWithInner.Inner{//!InheritInner(){}//Won'tcompileInheritInner(WithInnerwi){wi.super();

}

publicstaticvoidmain(String[]args){WithInnerwi=newWithInner();InheritInnerii=newInheritInner(wi);

}}///:~5455內(nèi)部類的覆蓋//:innerclasses/BigEgg.java//Aninnerclasscannotbeoverridenlikeamethod.importstaticnet.mindview.util.Print.*;classEgg{

privateYolky;

protectedclassYolk{

publicYolk(){print("Egg.Yolk()");}

}

publicEgg(){

print("NewEgg()");y=newYolk();

}}publicclassBigEggextendsEgg{

publicclassYolk{

publicYolk(){print("BigEgg.Yolk()");}

}

publicstaticvoidmain(String[]args){

newBigEgg();

}}內(nèi)部類和外圍類是兩個獨立個體,不存在內(nèi)部類覆蓋NewEgg()Egg.Yolk()5556//:innerclasses/BigEgg2.javapackageinnerclasses;/*AddedbyEclipse.py*///Properinheritanceofaninnerclass.importstaticnet.mindview.util.Print.*;classEgg2{

protectedclassYolk{

publicYolk(){print("Egg2.Yolk()");}

publicvoidf(){print("Egg2.Yolk.f()");}

}

privateYolky=newYolk();

publicEgg2(){print("NewEgg2()");}

publicvoidinsertYolk(Yolkyy){y=yy;}

publicvoidg(){y.f();}}publicclassBigEgg2extendsEgg2{

publicclassYolkextendsEgg2.Yolk{

publicYolk(){print("BigEgg2.Yolk()");}

publicvoidf(){print("BigEgg2.Yolk.f()");}

}

publicBigEgg2(){insertYolk(newYolk());}

publicstaticvoidmain(String[]args){Egg2e2=newBigEgg2();e2.g();

}}/*Output:Egg2.Yolk()NewEgg2()Egg2.Yolk()BigEgg2.Yolk()BigEgg2.Yolk.f()聲明主類對象先依次初始化主類的基類的非靜態(tài)定義和構造器,再初始化主類的;5657內(nèi)部類的作用2.最根本的作用就是實現(xiàn)JAVA中的多繼承!!Java只能繼承一個類,它的多重繼承在我們沒有學習內(nèi)部類之前是用接口來實現(xiàn)的。但使用接口有時候有很多不方便的地方。比如我們實現(xiàn)一個接口就必須重寫它里面的所有方法。而有了內(nèi)部類就不一樣了。它可以使我們的類繼承多個具體類或抽象類。

1.內(nèi)部類可以很好的實現(xiàn)隱藏

一般的非內(nèi)部類,是不允許有private與protected權限的,但內(nèi)部類可以。3.可以避免修改接口而實現(xiàn)同一個類中兩種同名方法的調(diào)用。如果類要繼承一個類,還要實現(xiàn)一個接口,可是你繼承的類和接口里面有兩個同名的方法怎么辦?你怎么區(qū)分它們??這就需要我們的內(nèi)部類了。5758很好的實現(xiàn)隱藏接口packageinsidecategory;

publicinterfaceIncrementable{

voidincrement();}具體類packageinsidecategory;

publicclassExample{

privateclassInsideClassimplementsInterfaceTest

{

publicvoidtest()

{

System.out.println("這是一個測試");

}

}

publicInterfaceTestgetIn()

{

returnnewInsideClass();

}}客戶端程序packageinsidecategory;

publicclassTestExample{

publicstaticvoidmain(Stringargs[])

{

Examplea=newExample();

InterfaceTesta1=a.getIn();

a1.test();

}}從客戶端程序只知道Example的getIn()方法能返回一個InterfaceTest實例,但并不知道這個實例是這么實現(xiàn)的。而且由于InsideClass是private的,所以如果不看服務器代碼的話,根本看不到這個具體類的名字,所以說它可以很好的實現(xiàn)隱藏。5859實現(xiàn)JAVA中的多繼承類一

packageinsidecategory;

publicclassExample1{

publicStringname()

{

return"liutao";

}}類二packageinsidecategory;

publicclassExample2{

publicintage()

{

return25;

}}類三

packageinsidecategory;

publicclassMainExample{

privateclasstest1extendsExample1{

publicStringname()

{

return();

}

}

privateclasstest2extendsExample2

{

publicintage()

{

returnsuper.age();

}

}

publicStringname()

{

returnnewtest1().name();

}

publicintage(){

returnnewtest2().age();

}

publicstaticvoidmain(Stringargs[])

{

MainExamplemi=newMainExample();

System.out.println("姓名:"+());

System.out.println("年齡:"+mi.age());

}}類三,里面分別實現(xiàn)了兩個內(nèi)部類te

溫馨提示

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

評論

0/150

提交評論