java基礎(chǔ)課教學(xué)第9天課件_第1頁
java基礎(chǔ)課教學(xué)第9天課件_第2頁
java基礎(chǔ)課教學(xué)第9天課件_第3頁
java基礎(chǔ)課教學(xué)第9天課件_第4頁
java基礎(chǔ)課教學(xué)第9天課件_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java 基礎(chǔ)課第 9 天課件一、接口繼承1、 一個接口,可以繼承多個接口2、 用于接口的數(shù)據(jù)類型重新組合3、 示例如下二、接口中的所有方法,自動為 public abstract 1、 接口方法,前面沒有默認(rèn)地為 public abstract2、 示例如下publicerface IAdd add(a,b); /缺省了public abstractpublic class ImplAdd_1implements IAdd Override/通過下面的方法,說明父類的add(a,b)必須是public abstractpublicadd(a,b) return 0;publicerface

2、IAdd add(a,b); /缺省了public abstractpublicerface ISub sub(a,b);publicerface IAddSub extends IAdd,ISub publicerface IMul mul(a,b);publicerface IDiv div(a,b);publicerface IMulDiv extends IMul,IDiv /ICal有7+1(Object)=8個數(shù)據(jù)類型publicerface ICal extends IAddSub,IMulDiv,IAdd,ISub, IMul,IDiv三、關(guān)于接口中的屬性1、 接口的所有屬性,

3、缺省類型為public sic final 2、 示例如下四、關(guān)于強制轉(zhuǎn)換原理分析public abstract class AbsAdd 。public class ImplAdd_1 extends AbsAdd 。檢測/強制轉(zhuǎn)換的原理分析public sic void main(String args) ImplAdd_1 obj=new ImplAdd_1(); Log.getLog().info(obj=+obj);b1=obj instanceof ImplAdd_1; Log.getLog().info(b1=+b1);b2=obj instanceof AbsAdd; Log.

4、getLog().info(b2=+b2);b3=obj instanceof Object; Log.getLog().info(b3=+b3); AbsAdd obj2=obj;check=obj2=obj; Log.getLog().info(check=+check);ImplAdd_1 obj3=(ImplAdd_1) obj2; /此時,需要強制轉(zhuǎn)換/Object obj4=obj;/不需要強轉(zhuǎn) Object obj4=obj2;/不需要強轉(zhuǎn)ImplAdd_1 obj5=(ImplAdd_1) obj4; /此時,需要強制轉(zhuǎn)換Log.getLog().info(上面有錯嗎?);pu

5、blicerface IAdd num=10;/缺省了 public sic final,為常量String NAME=java基礎(chǔ);add(a,b); /缺省了public abstract/ public sic final String NAME=java基礎(chǔ); /這一行代碼下面等效五、關(guān)于覆蓋方法的定位1、 抽象父類2、 實現(xiàn)子類 13、 實現(xiàn)子類 2public class ImplAdd_2 extends AbsAddpublic ImplAdd_2() Log.getLog().info(this=+this);Overrideadd(a,b) Log.getLog().inf

6、o(a= + a + ,b= + b); return a + b+100;public class ImplAdd_1 extends AbsAdd/,AbsAdd2/有錯,類的繼承,只能繼承一個父類public ImplAdd_1() super(); Log.getLog().info(this=+this);Overrideadd(a,b) Log.getLog().info(a= + a + ,b= + b); return a + b;/下面sub也是一個覆蓋方法,并且作用域是不寫的 Overridepublicsub(a,b) Log.getLog().info(a= + a +

7、 ,b= + b); return a - b;public abstract class AbsAdd public AbsAdd() Log.getLog().info(this=+this);abstractadd(a,b);/問題:如果這個方法是覆蓋方法,這里的方法,不能運行 sub(a,b) Log.getLog().info(a=+a+,b=+b);return a-b-10;/下面sub也是一個覆蓋方法,并且作用域是不寫的Overridepublicsub(a,b) Log.getLog().info(a= + a + ,b= + b); return a - b-1;4、 覆蓋

8、方法檢測定位原理重點中重點,要精通父類數(shù)據(jù)類型 obj=new實現(xiàn)子類(。);1)上面等號左邊決定 obj 是否有可以運行的方法或者:obj 的方法是否存在或者:obj 是否上面等號右邊限運行相應(yīng)的方法2)決定方法的具體執(zhí)行六、關(guān)于抽象類的總結(jié)1、 定義抽象類時public abstract class 抽象類名稱abstract 數(shù)據(jù)類型 抽象方法(類型 1參數(shù) 1,類型 2參數(shù) 2,類型 n 參數(shù) n);/作用域可以是 3 個:不寫、protected、public2、 實現(xiàn)子類,只能繼承一個抽象父類3、 抽象類可以有抽象方法,也可以無4、 抽象類可以具體方法,也可以無5、 抽象可能有多實

9、現(xiàn)子類每個實現(xiàn)類,可能產(chǎn)了一個多態(tài)public sic void main(String args) AbsAdd obj=new ImplAdd_1();/AbsAdd obj=new ImplAdd_2();n1=obj.add(2, 3); Log.getLog().info(n1=+n1);n2=obj.sub(2, 3); Log.getLog().info(n2=+n2);public sic void main(String args) /Object obj=new ImplAdd_1();/這一句,沒有意義,此時obj隱含存在 add,sub方法,只是能不使用AbsAdd o

10、bj=new ImplAdd_1();/AbsAdd obj=new ImplAdd_2();n1=obj.add(2, 3); Log.getLog().info(n1=+n1);n2=obj.sub(2, 3); Log.getLog().info(n2=+n2);七、關(guān)于 final 的總結(jié)作用于變量,方法,類1、 final,終態(tài)2、 作用于變量時,這個變量只能賦值 1 次3、 作用于方法時,這個方法不能有子類覆蓋4、 作用于類時,這個類不能子類八、8 個基本類型對應(yīng)的類型-byte-Bytechar-Character short-Short-eger float-Float lon

11、g-Long double-Double九、基本類型,也稱原生類也可以想象基本類是一個普通類十、關(guān)于與eger1、是基本類型eger 是基本類型,對應(yīng)的類型2、 他的包是java.lang.eger;如果一個類屬于 java.lang 目錄下,則不要 import 操作這個目錄是 java 最基本的工具3、4、eger 類是一個final 類eger 類沒有提供其值的方法所以賦值后,是不能修改的,如果改動后,則不是原有對象5、 可以將一個字符串轉(zhuǎn)換一個eger 類型6、 可以一個十進制的數(shù)字,轉(zhuǎn)換為 16 進制的字符串輸出7、 示例如下package qh.基本類型對應(yīng)的類型;import q

12、h.Log;/import java.lang;/這一行代碼不存在public class 檢測eger類型 public sic void main(String args) i1=0;eger i2=10; /等效于 i2=neweger(10);Log.getLog().info(i1=+i1+,i2=+i2); eger i3=neweger(13);Log.getLog().info(i3=+i3);/的類型賦值后,不能修改,如果修改后,則不是原有對象了/將一個字符串轉(zhuǎn)換的類型String s=000123; Log.getLog().info(s.length()=+s.lengt

13、h();eger i4=egarse(s);十一、 基本類型,對應(yīng)其他十二、 關(guān)于泛型的概念1、 泛的內(nèi)含類型,略沒有邊界不確定多,許多,很多2、 java 的泛型是指同一個變量可能有多個數(shù)據(jù)類型定義時,不指明數(shù)據(jù)類型使用時,再確認(rèn)數(shù)據(jù)類型十三、 關(guān)于泛型的定義方法1、 定義類時,定義一個或多個泛型類型2、 語法public class泛型 泛型 2泛型 n3、 示例如下類名稱public class 定義一個泛型 Type1 test1;類型2 test2;void test(Type1 t1,類型2 t2)Log.getLog().info(i4=+i4);String s2=+i4; /

14、將整型數(shù)字轉(zhuǎn)換為字符串 Log.getLog().info(s2=+s2);String s3=eger.toHexString(48); Log.getLog().info(s3=+s3);十四、 關(guān)于泛型的使用1、 定義好泛型后,可以任何需要時候使用2、 在使用一個泛型時,他的類型是確定的,明確的3、 示例如下十五、 使用泛型的作用1、 一個變量可以有多個數(shù)據(jù)類型2、 靈活,方便3、,或面試回答這個問題時,如下一個變量時可以有多個數(shù)據(jù)類型使用時,再確認(rèn)其數(shù)據(jù)類型這個變量的類型可以很靈活十六、 關(guān)于 JDK 對泛型的支持情況JDK 版本,1.5.x 以上,支持泛型,2004 年以后 jdk

15、支持泛型public sic void main2(String args) 定義一個泛型 obj=new 定義一個泛型();obj.test1=123;/obj.test1=123;/有錯 obj.test2=;/obj.test2=35;/有錯Log.getLog().info(obj.test1=+obj.test1+,obj.test2=+obj.test2);public sic void main(String args) 定義一個泛型 obj=new 定義一個泛型(); obj.test1=123aaa;/obj.test1=123;/有錯 obj.test2=12.5f;/ob

16、j.test2=35;/有錯Log.getLog().info(obj.test1=+obj.test1+,obj.test2=+obj.test2);十七、 關(guān)于一個類文件中的多個類1、 一個類文件中可以寫多個類等效于這每一個類,獨立地編寫在同一個目錄下2、 但有一個要求,只能有一個類是 public 作用域3、 同一個類.java,在編繹輸出目錄下,生成多個.class 文件4、 示例如下public class 同一個類文件中的多個類 age=22;public sic void main(String args) 同一個類文件中的多個類 obj=new 同一個類文件中的多個類(); L

17、og.getLog().info(obj.age=+obj.age);class 類2age=23;public sic void main(String args) Log.getLog().info(test 2);class 類3age=25;public sic void main(String args) Log.getLog().info(test3);十八、 關(guān)于類1、類,inner class2、 寫在一個類程序體的類,稱為 inner class,類3、類,等效于一個動態(tài)方法或者:一個4、 示例如下類,與一個動態(tài)方法,處在平級別狀態(tài)public class 寫一個類程序體類是

18、類 add(a,b)return a+b;void test()類1 obj=new類1(); n1=obj.add(2, 3);Log.getLog().info(n1=+n1); n2=add(2, 3);Log.getLog().info(n2=+n2);class類1add(a,b)return a+b+100;public sic void main(String args) 運行時,可以選擇其中的任何一個 main 運行十九、 關(guān)于類的作用1、 大量在 java 類部事件處理中2、 安卓開發(fā)3、 java 的 GUI(AWT,SWING)開發(fā)寫一個類程序體類是類 obj=new 寫

19、一個類程序體類是類(); n1=obj.add(3, 4);Log.getLog().info(n1=+n1);Log.getLog().info(n1=+n1); obj.test();/在外面,也可以使用類/類1 obj2=new類1(); /有錯,不能直接使用類1 obj2=obj.new類1(); /OK1,通過對象,構(gòu)建類的對象/類1 obj2=new 寫一個類程序體類是類().new類1(); /道理與上一行代碼相同n2=obj2.add(3, 6); Log.getLog().info(n2=+n2);二十、 關(guān)于異常的概念1、 異常錯誤 不正常2、 代碼在運行過程中,出現(xiàn)的錯誤

20、,稱為異常3、 示例如下public sic void main(String args) Log.getLog().info(-1);Log.getLog().info(-2);a=10; b=0;Log.getLog().info(出口); /上一行代碼出現(xiàn)異常后,之后的代碼不再運行,這就是運行異常c=a/b;二十一、關(guān)于 try/catch 用法1、 如果有可能出現(xiàn)異常,用 try/catch 捕獲異常,讓后續(xù)代碼可以繼續(xù)運行try:試一試 catch:捕獲2、 語法try/加入可能在運行中出現(xiàn)錯誤的代碼catch(Exception e) e.prStackTrace();/stack

21、:棧,表示棧內(nèi)存/trace :/pr:顯示,(打印)3、 示例如下public class 解決異常try_catch void test1()try n=10/0;Log.getLog().info(第1個檢測方法,n=+n); catch (Exception e) e.prStackTrace();void test2()n=10/2;Log.getLog().info(第2個檢測方法,n=+n);public sic void main(String args) 解決異常try_catch obj=new 解決異常try_catch(); obj.test1();Log.getLog

22、().info(方法1完成了。); obj.test2();Log.getLog().info(方法2完成了。); Log.getLog().info(main函數(shù)出口。);二十二、關(guān)于常見異常,查詢 jdk 幫助文檔,Exception1、 在幫助文檔中,輸入ex2、 Exception 類是絕大多數(shù)異常的父類可異常或者:必須要管理的異常3、 RuntimeException運行過程不可控異?;蛘撸翰豢僧惓;蛘撸嚎梢圆挥霉芾淼漠惓6㈥P(guān)于 try/catch,有多個 catch1、 一個程序段可能出現(xiàn)多個不同名稱的異常每個不同名稱的異常,可能用相應(yīng)的異常捕獲點進行管理2、 語法try/代

23、碼段 1/代碼段 2/代碼段 ncatch(異常類 1e) e.prStackTrace();catch(異常類 2e) e.prStackTrace();catch(異常類 ne) e.prStackTrace();3、 示例如下public sic void main(String args) try Object obj=neweger(123);/String str=(String) obj;/n=10/0;nums=2,6; nums2=22;catch (ClassCastException e) Log.getLog().info(強制轉(zhuǎn)換有錯。); e.prStackTrac

24、e();catch (ArrayIndexOutOfBoundsException e) Log.getLog().info(數(shù)組越界有錯。); e.prStackTrace();catch (ArithmeticException e) Log.getLog().info(數(shù)算有錯。); e.prStackTrace();catch (Exception e) Log.getLog().info(前面錯誤沒有聲稱負責(zé),我來負責(zé)。); e.prStackTrace();二十四、關(guān)于 try/catch/finally 中的 finally 用法1、 finally,最后的代碼寶地2、 在 tr

25、y/catch/finally 體系中無論 try 代碼有錯,還是無錯,finally 部分都會運行 無論 try 后面有 catch,還是無 catch,finally 部分都會運行3、 示例如下public class 體會finally的用法 void test()try Object obj=neweger(123);/String str=(String) obj;/n=10/0;nums=2,6;/nums2=22;catch (ClassCastException e) Log.getLog().info(強制轉(zhuǎn)換有錯。); e.prStackTrace();catch (ArrayIndexOutOfBoundsException e) Log.getLog().info(數(shù)組越界有錯。); e.prStackTrace();catch (ArithmeticException e) Log.getLog().info(數(shù)算有錯。); e.prStackTrace();catch (

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論