




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第10章 組成、聚合關係與抽象類別10-1 類別的組成關係 - 巢狀類別10-2 類別的聚合關係10-3 抽象類別10-4 抽象類別與介面10-5 常數(shù)類別110-1 類別的組成關係 - 巢狀類別10-1-1 巢狀類別10-1-2 內層類別的使用210-1-1 巢狀類別-說明巢狀類別強調類別間的關聯(lián)性,強調內層類別一定需要外層類別,如果外層類別的物件不存在,內層類別物件也不會存在,內層的成員類別稱為內層類別(Inner Classes)。310-1-1 巢狀類別-巢狀類別的宣告Order巢狀類別的宣告,如下所示:class Order / Order外層類別 class OrderStatus
2、 / OrderStatus內層類別 Order類別擁有成員類別OrderStatus的內層類別,Order是巢狀類別的外層類別(Enclosing Class)。410-1-1 巢狀類別-UML類別圖UML類別圖的組成關係是一種成品和零件(Whole-Part)的類別關係,強調是成品的專屬零件,如下圖所示:510-1-1 巢狀類別-特點巢狀類別強調類別間的關係。例如:訂單擁有訂單狀態(tài),所以OrderStatus類別是Order類別的一部分。巢狀類別的內層類別也是外層類別的成員,所以其他成員可以存取或呼叫內層類別的成員變數(shù)和方法,就算宣告成private也一樣可以;反之,內層類別的方法也可以直
3、接存取其他成員變數(shù)和呼叫成員方法。在Java程式檔案只允許一個宣告成public的類別,如果巢狀類別宣告成public,內層類別也一樣是public的存取權限,可以讓同一個程式檔案的多個類別擁有public存取權限。610-1-2 內層類別的使用-說明巢狀類別的內層類別是外層類別的零件,是其一部分,所以不能宣告static靜態(tài)的類別變數(shù)和方法,而且只有在外層類別的物件存在時,內層類別才會存在。在第10-1-1節(jié)的程式範例是使用外層類別的物件變數(shù)來取得內層類別的物件,在這一節(jié)我們直接在主程式的程式碼建立內層類別的物件和指定成員變數(shù)值,以便說明內層類別專屬零件的角色。710-1-2 內層類別的使用
4、-類別範例例如:Payment巢狀類別宣告,如下所示:class Payment / Payment外層類別 class Card / Card內層類別 Payment類別是外層類別,Card類別是內層類別。810-1-2 內層類別的使用-建立巢狀類別的物件在程式碼先使用new運算子建立p1參考的Payment物件,接著使用Payment.Card宣告物件變數(shù)master,如下所示:Payment p1=new Payment(pay002,5600.0);Payment.Card master = p1.new Card();然後使用p1.new建立Card物件,最後指定內層類別物件的成員變
5、數(shù)值,如下所示:master.type = MASTER;master.number = 2433-4444-7890-1234;910-2 類別的聚合關係10-2-1 一對一的聚合關係10-2-2 一對多的聚合關係10-2-3 遞迴的聚合關係1010-2 類別的聚合關係在Java程式實作聚合關係和結合關係相同,其差異在於聚合關係的兩個類別擁有成品和零件(Whole-Part)的類別關係,並不是地位對等的兩個類別。聚合關係和上一節(jié)組成關係的差異,在於組成關係的零件是專屬零件,所以組成關係的零件並不能單獨存在。聚合關係的零件可以共用,而且零件的物件可以單獨存在。1110-2-1 一對一的聚合關係
6、-說明與UML類別圖一對一的聚合關係是指類別中擁有一個物件變數(shù)參考到其他類別的物件,此類別是成品(Whole),其他類別是零件(Part)。例如:Student類別擁有Date類別的生日,生日是學生的零件。UML類別圖,如下圖所示:1210-2-1 一對一的聚合關係-類別宣告Java程式碼也是使用物件變數(shù)參考其他物件,其類別宣告如下所示:class Student private Date birthday; class Date private Student student; 1310-2-1 一對一的聚合關係-Student()建構子在Student()建構子使用new運算子來建立Dat
7、e物件,如下所示:birthday = new Date(d, m, y, this);上述建構子的最後1個參數(shù)是指定Date物件的student物件變數(shù)值是目前的Student物件。1410-2-2 一對多的聚合關係-說明與UML類別圖一對多的聚合關係是指1個類別對多個類別,也就是成品需要同樣的多個零件。例如:一輛車有4個輪胎,Student學生擁有住家電話、宿舍電話和手機等多個Phone電話物件。UML類別圖,如下圖所示:1510-2-2 一對多的聚合關係-類別宣告筆者是使用物件陣列來實作一對多的聚合關係,如下所示:class Student private int pos = 0; pr
8、ivate Phone itsPhone = new Phone3; class Phone 1610-2-3 遞迴的聚合關係-說明遞迴結合關係(Self-associations)可以使用在結合、組成或聚合關係,它是指類別擁有參考到自已的指標,以聚合關係來說,類別本身是成品;也是零件。1710-2-3 遞迴的聚合關係-UML類別圖例如:學校的科系Department類別可以分成很多子科系,每一個子科系物件也是一種Department類別。UML類別圖如下圖所示:1810-2-3 遞迴的聚合關係-類別宣告我們一樣是使用物件陣列來建立一對多的遞迴聚合關係,如下所示:class Departmen
9、t private int pos; private Department itsSub= new Department2; 1910-2-3 遞迴的聚合關係-UML物件圖2010-3 抽象類別-說明在Java類別宣告使用abstract修飾子,表示是一個抽象類別(Abstract Class),抽象類別並不能建立物件,只能被繼承用來建立子類別。在抽象類別宣告也可以使用abstract宣告方法為抽象方法,表示方法只有原型宣告,實作的程式碼是在子類別建立,而且繼承的類別一定要實作抽象方法。2110-3 抽象類別-宣告抽象類別抽象類別是建立子類別的原型,抽象方法類似介面,可以視為建立子類別的介面方
10、法。例如:抽象類別Account宣告,如下所示:abstract class Account public String accountid; private double amount; public double interest; public abstract void calInterest(); public void setBalance(double a) public double getBalance() 2210-3 抽象類別-繼承抽象類別class SavingAccount extends Account public boolean haveCard; public
11、 SavingAccount(String id, double amount, double interest, boolean haveCard) public void calInterest() double amount = getBalance(); System.out.println(利息: “ +(amount*interest); 2310-3 抽象類別-UML類別圖2410-3 抽象類別-抽象類別的物件變數(shù)宣告抽象類別不能建立物件,但是可以作為資料型態(tài),宣告參考子類別的物件變數(shù),如下所示:Account s2 = new SavingAccount( 002-10-333
12、-123, 15000.00, 0.02, false);父類別的物件變數(shù)可以參考子類別的物件,以口語來說:SavingAccount物件也是一種Account物件。Account物件變數(shù)可以參考SavingAccount物件呼叫實作的抽象方法calInterest(),如下所示:s2.calInterest();2510-3 抽象類別-抽象類別的物件變數(shù)存取子類別的成員Java提供instanceof運算子判斷物件變數(shù)參考的哪一種物件,如下所示:if ( s2 instanceof SavingAccount ) . Account類別的物件變數(shù)s2儲存的是SavingAccount物件的參
13、考,如果需要存取子類別的成員,請先型態(tài)轉換成SavingAccount類別的物件變數(shù),如下所示:SavingAccount s;s = (SavingAccount) s2;2610-4 抽象類別與介面-抽象類別與介面的差異在抽象類別的方法可以宣告成抽象方法,也可以是一般方法;介面方法就只有宣告,在介面一定不會有實作程式碼。介面並不屬於類別的繼承架構;抽象類別則屬於類別的繼承架構。抽象類別一定是繼承架構的父類別,但是,就算亳無關係的類別也一樣可以實作同一個介面。一個類別只能繼承一個抽象類別,但是可以同時實作多個介面。2710-4 抽象類別與介面-抽象類別Java語言的類別可以繼承抽象類別且實作
14、介面。例如:圖形的Shape抽象類別,其類別宣告如下所示:abstract class Shape public double x; public double y; public abstract void area();2810-4 抽象類別與介面-介面例如:IPerimeter介面,其介面宣告如下所示:interface IPerimeter void perimeter();2910-4 抽象類別與介面-繼承抽象類別且實作介面class Rectangle extends Shape implements IPerimeter public void area() System.out
15、.println(長方形面積:“ +width*height); public void perimeter() System.out.println(長方形周長:“ +2*(width+height); 3010-4 抽象類別與介面-UML類別圖3110-4 抽象類別與介面-介面的物件變數(shù)1我們一樣可以使用介面來宣告物件變數(shù),參考到實作此介面的物件,如下所示:IPerimeter r3 = new Rectangle(15.0,15.0,4.0,8.0);以口語來說:Rectangle物件就是一種實作IPerimeter介面的物件。因為IPerimeter宣告的物件變數(shù)可以參考Rectang
16、le物件,所以,可以呼叫實作的介面方法perimeter(),如下所示:r3.perimeter();3210-4 抽象類別與介面-介面的物件變數(shù)2如同抽象類別宣告的物件變數(shù),當介面宣告的物件變數(shù)需要存取其參考類別的成員時,我們需要先型態(tài)轉換成Rectangle類別的物件變數(shù),如下所示:Rectangle r;r = (Rectangle) r3;3310-5 常數(shù)類別-說明Java類別除了可以使用public和abstract類別修飾子外,還提供final修飾子來宣告常數(shù)類別與常數(shù)方法。如果類別宣告成final表示類別不能被繼承;如果方法宣告成final表示此方法不可以覆寫。3410-5 常數(shù)類別-使用final修飾子的理由保密原因:基於保密理由,可以將一些類別宣告成final,以防止子類別存取或覆寫原類別的操作。設計原因:基於物件導向設計的需求,我們可以將某些類別宣告成final,以避免子類別繼承。3510-5 常數(shù)類別-常數(shù)類別與方法的範例fina
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年統(tǒng)計學考試問題解決試題及答案
- 醫(yī)院品管圈全員培訓課程
- 2024年汽車美容師考試心態(tài)調節(jié)與試題答案
- 2024年汽車美容師職能轉換考量試題及答案
- 2024年統(tǒng)計學知識網絡與分析試題及答案
- 強化監(jiān)管下食品企業(yè)責任的分析試題及答案
- 2024年統(tǒng)計學考試難度分析試題及答案
- 小學六年級語文生活應用試題及答案
- 六年級語文期中考試試題及答案
- 瑤族文化課件
- 2025-2030垃圾發(fā)電產業(yè)市場深度分析及前景趨勢與投資研究報告
- 物理-安徽省安慶市2024-2025學年高三下學期第二次模擬考試試卷(安慶二模)試題和答案
- 律師盡職調查工作方案
- 2024年杭州市糧食收儲有限公司招聘考試真題
- 血液凈化中心的感染預防與控制
- 2025山東省財金投資集團有限公司招聘19人筆試參考題庫附帶答案詳解
- 鋁合金攪拌摩擦沉積增材制造工藝的研究進展
- 2025年浙能集團應屆生招聘818人筆試參考題庫附帶答案詳解
- 幼兒園安全教育課件
- 某公司接待管理手冊 (一)
- 食堂員工食品安全操作規(guī)范培訓課件
評論
0/150
提交評論