第4章xml与java物件导向程式设计内容摘要:

),將類別實體化成物件實例,如下所示: joe = new Customer(陳會安 ,新北巿 )。 程式碼建立 Customer類別的物件,物件變數 joe的值不是物件本身,而是參考到此物件的指標。 422 Java的類別與物件 –存取物件變數與方法 在建立物件後,我們就可以存取物件的變數與呼叫方法,以 Customer類別建立的 joe物件為例,如下所示: = 37。 str += ()。 上述物件變數 joe使用「 .」運算子存取物件變數與呼叫方法,在其他類別只能存取宣告成 public修飾子的成員變數和方法,即 age成員變數,而不能存取 name和 address變數(只能在類別宣告內存取)。 423 過載方法與串流呼叫方法 – 過載  物件是依接收的訊息( Message)來執行不同的方法,換句話說,只需訊息有差異足以讓物件辨識,就算方法名稱相同,也一樣可以讓類別或物件執行正確的方法。  例如:在 Counter類別的 2個同名方法 count(),可以將計數加上參數值,如下所示: public Counter count(double num) public Counter count(int num)  2個方法雖然名稱相同,但是參數的資料型態不同,足以使用資料型態來判斷是 2個不同方法。 接著是參數個數不同的總和方法 sum(),如下所示: int sum(int a, int b) int sum(int a, int b, int c) 423 過載方法與串流呼叫方法 – 串流呼叫 因為前述 2個 count()過載方法的傳回值都是Counter物件,如下所示: public Counter count(double num) { count += num。 return this。 } 方法傳回值是 this關鍵字,即 Counter物件本身,我們可以直接使用「串流呼叫方法」( Method Chaining),如同項鍊的一串珠子一般依序呼叫各方法,如下所示: int count = (2).count().getCount()。 424 靜態成員與靜態初始程式區塊 – 類別變數和方法  類別變數和方法是使用 static修飾子進行宣告,屬於類別的靜態成員,所有物件都是使用同一份類別變數和呼叫同一個類別方法,例如: Student類別擁有類別變數 teacherNo、 count和類別方法 getStudentCount(),如下所示: class Student { public static int teacherNo = 500。 private static int count。 ………… public static int getStudentCount() { return count。 } ……….. } 424 靜態成員與靜態初始程式區塊 – 靜態初始程式區塊 static {}  在靜態初始程式區塊的程式碼是在類別載入 JVM後,進行類別變數初始化之前執行,一般來說,只有當類別需要使用一些非 Java函數庫的類別時才會使用,因為只有當類別第一次被使用到時,才會執行靜態初始程式區塊的程式碼,可以避免重複執行這些程式碼,並且將實作細節和外界隔離開,如下所示: public class a { static { } } 43 類別的繼承  431 類別架構 繼承  432 實作類別的繼承 43 類別的繼承 「繼承」( Inheritance)是物件導向程式設計的重要觀念,繼承是宣告的類別繼承現存類別的部分或全部的成員資料和方法、新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法或資料。 簡單的說,繼承就是擴充現存類別的功能,可以讓我們不用重頭建立類別宣告,只需找到可用的現成類別,然後繼承它來擴充或修改成符合我們需求的類別。 本節 Android Studio專案是 Ch4_3,內含。 431 類別架構 繼承 1 類別的繼承關係可以讓我們建立類別架構,例如:類別 Student是繼承自類別 Person,其類別架構如下圖所示: 431 類別架構 繼承 2 繼承不只可以多個子類別繼承同一個父類別,還可以擁有很多層的繼承,如右圖所示: 432 實作類別的繼承 – 父類別 在 Java宣告繼承類別前,需要先有一個父類別來繼承,例如:父類別 Vehicle定義車輛的基本資料,其類別宣告如下所示: class Vehicle { private string name。 private double price。 public Vehicle(String name, double price) { … } public String getVehicleInfo() { … } } 432 實作類別的繼承 – 子類別 現在我們可以宣告類別繼承存在的 Vehicle類別,例如:轎車 Car類別的宣告,如下所示: class Car extends Vehicle { private int doors。 public Car(String name, double price, int doors) { … } public String getCarInfo() { … } } 432 實作類別的繼承 – 覆寫和隱藏 如果父類別的成員方法不符合子類別的需求,我們可以在子類別宣告同名、同參數列和傳回值的方法來取代父類別的方法,稱為「覆寫」(Override)。 不過,實例方法並不能取代類別方法(宣告成static的方法),如果父類別擁有類別方法,子類別需要宣告同樣的類別方法來取代它,稱為「隱藏」( Hide)。 44 巢狀類別與匿名內層類別 巢狀類別  巢狀類別強調類別之間的關係,強調外層類別一定需要內層類別,如果內層類別的物件不存在,外層類別物件也不會存在。  巢狀類別的成員類別稱為「內層類別」( Inner Classes),例如: Order巢狀類別,其類別宣告如下所示: class Order { // Order外層類別 ………… class OrderStatus { // OrderStatus內層類別 …………… } ………… }  Order類別擁有成員類別 OrderStatus的內層類別, Order是巢狀類別的「外層類別」( Enclosing Class)。 44 巢狀類別與匿名內層類別 – 匿名內層類別 (說明 )  Java內層類別如果沒有命名,稱為「匿名內層類別」( Anonymous Inner Classes),簡單的說,因為我們並沒有使用 class關鍵字宣告類別名稱,所以稱為匿名,通常它是使用在 Java的 Swing;Android介面元件的事件處理,用來簡化複雜的事件處理程式碼。 一般來說,匿名內層類別的使用方式和命名的內層類別相似,不過,匿名內層類別不能宣告新類別,它必須繼承存在的類別,籍由繼承來定義內層類別,和建立此繼承類別的物件。 44 巢狀類別與匿名內層類別 – 匿名內層類別 (範例 ) 匿名內層類別,如下所示: result = ( new MyInt(100) { public S。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。