




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、物件導向程式設計(2)23子類別定義之成員父類別定義之成員子類別物件呼叫方法4561.class Ch05_012. public static void main(String args)3. Super05_01 a = new Super05_01();4. Sub05_01 b = new Sub05_01(); 5. System.out.println(a的data: + a.showData();6. System.out.println(b的data: + b.showData();7. 8.9.class Super05_0110. String data = Super05
2、_01原始資料;11. String showData()12. return data; 13. 14. class Sub05_01 extends Super05_0115. String data = Sub05_01的原始資料;16. String showData()17. return data; 18. 71.class Ch05_022. public static void main(String args)3. Super05_02 a = new Super05_02();4. Sub05_02 b = new Sub05_02();5. a.showData();6.
3、 b.showData();7. 8.9.class Super05_0210. String data = Super05_02原始資料;11. void showData()12. System.out.println(getData(); 13. String getData()14. return data; 15. 16. class Sub05_02 extends Super05_0217. String data = Sub05_02的原始資料;18. String getData()19. return data; 20. 81.class Ch05_032.3. publi
4、c static void main(String args)4. 5. Super05_03 a = new Super05_03();6. Sub05_03 b = new Sub05_03();7. 8. System.out.println(a的data: + a.showData();9. System.out.println(b的data: + b.showData();10. 11.12.class Super05_0313.14. String data = Super05_03原始資料;15. String showData()16. return data; 17.18.c
5、lass Sub05_03 extends Super05_0319. String data = Sub05_03的原始資料;20. String showData()21. return super.showData(); 22.910修飾字修飾字 abstract class 類別名稱類別名稱/屬性宣告屬性宣告修飾字修飾字 abstract 型別型別 方法名稱方法名稱(參數列參數列);/其它方法定義其它方法定義111213 多載:class 液體_05 String drink; 液體_05(String drink_name) drink = drink_name; class 固體_
6、05 String food; 固體_05(String food_name) food = food_name; class 動物_05 void 吃(液體_05 a) System.out.println(a.drink + 是用喝的或吸的!); void 吃(固體_05 a) System.out.println(a.food + 是要用咬的或磨的!); class Ch05_05 public static void main(String args) 液體_05 x1 = new 液體_05(珍珠奶茶); 固體_05 x2 = new 固體_05(漢堡); 液體_05 x3 = ne
7、w 液體_05(水); 固體_05 x4 = new 固體_05(草); 動物_05 牛 = new 動物_05(); 動物_05 人 = new 動物_05(); System.out.println(= 牛 =); 牛.吃(x3); 牛.吃(x4); System.out.println(= 人 =); 人.吃(x1); 人.吃(x2); 14多型class 動物_06 String kind; void 吃(液體_06 a) System.out.println(a.drink + 是用喝的或吸的!); void 吃(固體_06 a) System.out.println(a.food
8、+ 是要用咬的或磨的!); class 人_06 extends 動物_06 人_06() kind = 人; void 吃(液體_06 a) System.out.println(a.drink + 是用喝的!); void 吃(固體_06 a) System.out.println(a.food + 是用咬的!); class 牛_06 extends 動物_06 牛_06() kind = 牛; void 吃(液體_06 a) System.out.println(a.drink + 是用吸的!); void 吃(固體_06 a) System.out.println(a.food +
9、是用磨的!); 15class Ch05_06 public static void main(String args) 液體_06 x1 = new 液體_06(珍珠奶茶); 固體_06 x2 = new 固體_06(漢堡); 液體_06 x3 = new 液體_06(水); 固體_06 x4 = new 固體_06(草); 牛_06 y1 = new 牛_06(); 人_06 y2 = new 人_06(); System.out.println(= + y1.kind + =); y1.吃(x3); y1.吃(x4); System.out.println(= + y2.kind + =
10、); y2.吃(x1); y2.吃(x2); class 液體_06 String drink; 液體_06(String drink_name) drink = drink_name; class 固體_06 String food; 固體_06(String food_name) food = food_name; 16物件的型別轉換物件的型別轉換小紅小紅是一條是一條魚魚。小紅小紅是一隻是一隻脊椎動物脊椎動物。小紅小紅是一隻是一隻動物動物。脊椎動物無脊椎動物界 Kingdom門 Phylum綱 Class動物哺乳類鳥類爬蟲類兩棲類魚類植物一般化特殊化17class Ch05_07 publ
11、ic static void main(String args) 液體_07 x1 = new 液體_07(珍珠奶茶); 固體_07 x2 = new 固體_07(漢堡); 液體_07 x3 = new 液體_07(水); 固體_07 x4 = new 固體_07(草); 動物_07 y1 = new 牛_07(); 動物_07 y2 = new 人_07(); System.out.println(= + y1.kind + =); y1.吃(x3); y1.吃(x4); System.out.println(= + y2.kind + =); y2.吃(x1); y2.吃(x2); 18物
12、件的型別轉換物件的型別轉換- 異質集合異質集合19物件的型別轉換物件的型別轉換- 異質集合異質集合的物件陣列的物件陣列aa0a1a2Animal 型別參照Animal 型別參照Fish 型別物件Vertebrate 型別物件Animal 型別物件20class Ch05_08 public static void main(String args) 液體_08 x1 = new 液體_08(珍珠奶茶); 固體_08 x2 = new 固體_08(漢堡); 液體_08 x3 = new 液體_08(水); 固體_08 x4 = new 固體_08(草); 動物_08 y = new 牛_08()
13、, new 人_08(); int i; for(i= 0; i2; i+) System.out.println(= + yi.kind + =); yi.吃(x1); yi.吃(x2); yi.吃(x3); yi.吃(x4); 21物件的強制型別轉換物件的強制型別轉換(1/3)(目的類別目的類別)物件參照變數物件參照變數 物件參照變數物件參照變數所指向的物件實體,必須是目的類別目的類別的物件實體,或是其子類別的物件實體。22物件的強制型別轉換物件的強制型別轉換(2/3)子類別定義之成員父類別定義之成員子類別物件父類別定義之成員父類別物件物件型別轉換不能使用23物件的強制型別轉換物件的強制型
14、別轉換(3/3)無法轉換父類別定義之成員父類別物件子類別定義之成員父類別定義之成員子類別物件從何而來?24instanceof運算子運算子 物件名稱物件名稱instanceof類別名稱類別名稱25 請以範例4,5,6,7,8為參考 建立一個程式: 食物類別:食物名稱 液體類別 固體類別 動物類別:吃() 人類別:吃(固體), 吃(液體) 牛類別:吃(固體), 吃(液體) 人和牛要吃所有的食物26考慮一商店買賣系統商店有貨品: 湯瑪士:進貨50,單價290 培西:進貨40,單價290 哈諾:進貨20,單價290執行下列動作: 賣(湯瑪士, 10) 賣(培西, 5) 特價(哈諾, 190) 賣(湯
15、瑪士,60) 賣(哈諾, 10)輸出: 每次賣東西後,都要針對該筆交易產生帳單 每次賣東西後,要顯示現在存貨 每次有更新,也要顯示狀況 最後,顯示庫存及單價27abstract class 食物_ex1 String food_name; abstract void 吃的方式();class 液體_ex1 extends 食物_ex1 液體_ex1(String drink_name) food_name = drink_name; void 吃的方式() System.out.println(喝的); class 固體_ex1 extends 食物_ex1 固體_ex1(String foo
16、d) food_name = food; void 吃的方式() System.out.println(嚼的); 28abstract class 動物_ex1 String kind; abstract void 吃(食物_ex1 a);class 人_ex1 extends 動物_ex1 人_ex1() kind = 人; void 吃(食物_ex1 a) if (a instanceof 液體_ex1) System.out.print(a.food_name + 是用杯子); a.吃的方式(); else System.out.print(a.food_name + 是用牙齒); a.
17、吃的方式(); class 牛_ex1 extends 動物_ex1 牛_ex1() kind = 牛; void 吃(食物_ex1 a) if (a instanceof 液體_ex1) System.out.print(a.food_name + 是用舌頭); a.吃的方式(); else System.out.print(a.food_name + 是用臼齒); a.吃的方式(); 29class Ex05_01 public static void main(String args) 食物_ex1 x = new 液體_ex1(珍珠奶茶), new 固體_ex1(漢堡), new 液體
18、_ex1(水), new 固體_ex1(草); 動物_ex1 y = new 牛_ex1(), new 人_ex1(); int i, j; for(i= 0; i2; i+) System.out.println(= + yi.kind + =); for(j = 0; j = 地價) /有錢可以買地 買地人.錢 -= 地價; 地主 = 買地人; System.out.println(買地人.名字 + 買了 + 地名); else System.out.println(買地人.名字 + 沒有買地); return; /土地土地2多加一個多加一個登記土地所有權人登記土地所有權人的方法,只是為了
19、連結到父類別的登記土地所有權的方法,只是為了連結到父類別的登記土地所有權人方法人方法class 土地2 extends 土地 int 過路費 = new int6; int 房子數 = 0; 土地2(String 地名) super(地名); for(int i = 0; i 過路費.length; i+) 過路費i = 20 + i*10; 土地2(String name, int price) super(name); 地價 = price; for(int i = 0; i = 40) 位置 -= 40; 錢 += 1000; return; void 付過路費(土地2 路過此地) 錢
20、-= 路過此地.過路費路過此地.房子數; 路過此地.地主.錢 += 路過此地.過路費路過此地.房子數; System.out.println(名字 + 要付給 + 路過此地.地名 + 的地主 +路過此地.地主.名字 + + 路過此地.過路費路過此地.房子數 + 元); abstract void 購地策略(土地2 l); /建立兩個子類別,並實作父類別的抽象方法購地策略建立兩個子類別,並實作父類別的抽象方法購地策略class 我就是要買 extends 玩家 我就是要買(String name) super(name); void 購地策略(土地2 l) l.登記土地所有權人(this); c
21、lass 打死不買 extends 玩家 打死不買(String name) super(name); void 購地策略(土地2 l) System.out.println(名字 + 是打死不買,所以不買就是不買); /在主程式的部份,利用異質陣列,只需在配置空間時,宣告為打死不買和我就是在主程式的部份,利用異質陣列,只需在配置空間時,宣告為打死不買和我就是要買的不同類別物件要買的不同類別物件class 大富翁 public static void main(String args) String 土地名 = 中華民國, 日本, 韓國, 菲律賓, 馬來西亞, 越南, 泰國, 印度, 伊拉克,
22、 伊朗, 沙烏地阿拉伯, 土耳其, 以色列, 蘇俄, 波蘭, 德國, 奧地利, 瑞士, 法國, 比利時, 荷蘭, 英國, 芬蘭, 瑞典, 丹麥, 希臘, 義大利, 西班牙, 葡萄牙, 埃及, 摩洛哥, 南非, 加拿大, 美國, 墨西哥, 宏都拉斯, 尼加拉瓜, 古巴, 巴拿馬, 巴西 ;String PN = 喜羊羊, 美羊羊, 小灰灰, 灰太狼;土地2 L = new 土地240; for (int i = 0; i L.length; i+) if(i/2 * 2 = i) Li = new 土地2(土地名i, i*20); else Li = new 土地2(土地名i); / Li.地名 = 土地名i; System.out.println(Li.地名
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨界融合促進建筑產業多元化發展
- 研究生課程思政面臨的主要挑戰與制約因素
- 護理操作技巧課件
- 直播電商生態中的價值共創與治理機制
- 王英造價工程師案例課件
- 雨雪環境下戶外運動訓練對學生的影響研究
- 公司合伙資金管理制度
- 公司員工宿舍及招待所管理制度
- 公司備件及材料管理制度
- 公司大門接待室管理制度
- (2025)入黨積極分子培訓考試試題及答案
- 2025年計算機網絡技術考試試卷及答案
- 2025年天津市河西區中考二模語文試題
- 教育事業十五五(2026-2030)發展規劃
- 2025年中醫基礎理論考試試題及答案
- 2025中國鐵路濟南局集團限公司招聘116人(七)易考易錯模擬試題(共500題)試卷后附參考答案-1
- 酒店入股合同協議書范本
- 2025年高考軍隊院校征集和招錄人員政治考核表(原表)
- TCCEAS001-2022建設項目工程總承包計價規范
- 思想道德與法治(湖南師范大學)智慧樹知到期末考試答案章節答案2024年湖南師范大學
- 振型中的節點,節線,節徑和節圓
評論
0/150
提交評論