第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。第4章xml与java物件导向程式设计
本资源仅提供20页预览,下载后可查看全文
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。
相关推荐
第4章万维网和电子邮件
子邮件的英文名称叫做 Email,全称是: Electronic Mail,也就是利用电子方式进行传输的信件。 • 从工作原理上来说,电子邮件传输方式跟普通信件传递具有更大的类似性,而跟电话传输方式相比差别却很大。 电话系统主要是基于一百年前贝尔所发明的电话原理 电路交换方式时,通话过程中通信双方始终都必须占据一条线路。 电子邮件则采用另一种不同的方式 ——
第4章mfc基本应用程序的建立
s here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG DECLARE_MESSAGE_MAP() // 声明消息映射 }。 ... MFC AppWizard 代码中, //{{AFX_VIRTUAL(类名 ) ... //}}AFX_VIRTUAL 是
第3章数据的概括性度量
公式为 6. 可看作是均值的一种变形 nniinnm xxxxG 121 nxxxxnGniinm 121lg)lglg( l g1lg STAT 几何平均数 (例题分析 ) 【 例 】 一位投资者持有一种股票 , 1996年 、1997年 、 1998年和 1999年收益率分别为%、 %、 %、 %。 计算该投资者在这四年内的平均收益率。
第3章指标与字串pointersandstrings
標與二維陣列 方法 2 第二個方法是使用 tables[][]陣列名稱的指標變數,其運算式如下所示: *(*(tables + i) + j) tables是二維陣列的名稱,可以將它視為是一個指向指標的指標變數,在中間括號部分的運算式,如下所示: *(tables+i) 上述指標運算可以當作是第一欄tables[ROWS][0]的指標運算,取值運算取得的是: •