




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
在線教務輔導網(wǎng):更多課程配套課件資源請訪問在線教務輔導網(wǎng)10/1/20231第7章枚舉和泛型10/1/202321枚舉
枚舉使用關鍵字enum定義。例如,以下代碼定義了一個表示季節(jié)的枚舉Season:enumSeason{SPRING,SUMMER,AUTUMN,WINTER}其中的標識符SPRING、SUMMER、AUTUMN和WINTER稱為枚舉常量,它們都是Season的public和static成員聲明枚舉變量:Seasonseason;10/1/202331枚舉對枚舉變量season賦值:season=Season.SUMMER;枚舉變量和枚舉值之間可以使用==進行比較,還可以在switch語句中使用枚舉值,例如:switch(season){caseSPRING://caseSUMMER://…}10/1/202341枚舉例7-1枚舉作為類的成員變量和方法的參數(shù)
enumSeason{
SPRING,SUMMER,AUTUMN,WINTER}
10/1/202352枚舉的類特性
Java語言的枚舉具有類的特性。枚舉可以定義構造方法、成員方法和實例變量枚舉是引用數(shù)據(jù)類型,枚舉變量是引用變量枚舉不能通過關鍵字new創(chuàng)立對象,每個枚舉常量就是這個枚舉的一個對象,引用枚舉常量就會調用枚舉的構造方法10/1/202362枚舉的類特性
例7-2定義一個枚舉Planet表示太陽系的九大行星,除了定義9個枚舉常量外,還要定義表示半徑的成員變量,初始化成員變量的構造方法,返回半徑值的構造方法。
10/1/202372枚舉的類特性enumPlanet{
MERCURY(2.4397e6),
VENUS(6.0518e6),
EARTH(6.37814e6),
MARS(3.3972e6),
…privatedoubleradius;Planet(doubleradius){this.radius=radius;}doublegetRadius(){returnradius;}}
10/1/202383泛型類例定義一個泛型類,成員變量是類型變量對象,并定義setter/getter方法創(chuàng)立該泛型類String版的對象創(chuàng)立該泛型類Integer版的對象10/1/202393泛型類
例7-3泛型類的定義和使用
classBox<T>{ privateTt; voidset(Tt){ this.t=t; } Tget(){ returnt; }}10/1/2023103泛型類publicclassExample7_3{ publicstaticvoidmain(String[]args){ Box<String>b=newBox<String>(); b.set("Hello!"); Strings=b.get(); System.out.println(s); //b.set(newInteger(22)); }}10/1/2023113泛型類publicclassExample7_3{ publicstaticvoidmain(String[]args){ Box<Integer>d=newBox<Integer>(); d.set(newInteger(35)); Integeri=d.get(); System.out.println(i);//i自動解包后輸出 }}10/1/2023124泛型方法泛型方法是在方法的定義中使用類型變量。定義求數(shù)組的中間元素的泛型方法,并求String和Integer數(shù)組的中間元素。classArrayGen{ publicstatic<T>TgetMiddle(T[]t){ returnt[t.length/2]; }}10/1/2023134泛型方法publicclassExample7_5{ publicstaticvoidmain(String[]args){ Strings[]={"we","are","studying","Java","language!"}; Stringmiddle1=ArrayGen.<String>getMiddle(s);//<String>可省略 System.out.println(middle1); Integeri[]={newInteger(1),2,3,4};//后3個元素自動包裝成Integer對象 Integermiddle2=ArrayGen.getMiddle(i); System.out.println(middle2); }}10/1/2023145泛型接口例:定義一個泛型接口GenInterfaceBox,其中的方法contains()判斷調用對象是否包含指定的值.interfaceGenInterfaceBox<T>{ booleancontains(Tt);}10/1/2023155泛型接口classGenClassBox<T>implementsGenInterfaceBox<T>{ T[]elements; GenClassBox(T[]elements){ this.elements=elements; } publicbooleancontains(Tt){ for(Tx:elements) if(x.equals(t))returntrue; returnfalse; }}10/1/2023166有多個類型變量的泛型泛型中的類型變量可以有多個。有多個類型變量時,<>中的類型變量名之間用逗號分隔,創(chuàng)立對象時,必須為這些類型變量指定具體的類名例7-7有兩個類型變量的泛型類10/1/2023177約束類型變量聲明約束類型變量,是在類型變量的后面使用extends指定其超類,以這個超類作為類型變量的上界約束,傳送給類型變量的類只能是這個超類的子類或者就是這個超類。例7-8使用約束類型變量的泛型類10/1/2023187約束類型變量classNumberFunc<TextendsNumber>{ Tnumber; NumberFunc(Tt){ number=t; } doublegetReciprocal(){ return1/number.doubleValue(); } doublegetFraction(){ returnnumber.doubleValue()-Value(); }}10/1/2023197約束類型變量publicclassExample7_8{ publicstaticvoidmain(String[]args){ NumberFunc<Integer>i=newNumberFunc<Integer>(10); System.out.println("i的倒數(shù)是:"+i.getReciprocal()); System.out.println("i的小數(shù)是:"+i.getFraction()); NumberFunc<Double>d=newNumberFunc<Double>(8.5); System.out.println("d的倒數(shù)是:"+d.getReciprocal()); System.out.println("d的小數(shù)是:"+d.getFraction()); //NumberFunc<String>s; }}10/1/20232010/1/20232110/1/20232210/1/20232310/1/20232410/1/202325饞死10/1/20232610/1/20232710
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件開發(fā)外包合同免責條款
- 醫(yī)療器械使用風險告知及免責合同
- 家具安裝工合同協(xié)議書
- 物聯(lián)網(wǎng)+智慧城市項目投資合同
- 無錫全日制勞動合同
- 藥店裝修施工合同
- 高新技術轉讓合作合同
- 電子商務平臺入駐及推廣服務合同
- 裝修地暖施工合同
- 浙江工業(yè)大學《藥用植物栽培學》2023-2024學年第二學期期末試卷
- Unit5 What day is it today?(教學設計)-2023-2024學年教科版(廣州)英語四年級下冊
- 法院生活費申請書
- 2025年益陽醫(yī)學高等??茖W校高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 醫(yī)用氣體施工方案
- 人教版小學數(shù)學一年級下冊教案
- 新版人音版小學音樂一年級下冊全冊教案
- 急診與災難醫(yī)學第二版配套課件 02 急性發(fā)熱
- 部編版四年級道德與法治下冊4《買東西的學問》第1課時課件
- 公因數(shù)、最大公因數(shù)的應用
- CBT主要技術精品課件
- 常用液壓元件型號對照表230
評論
0/150
提交評論