Liang Introduction to Java Programming Ninth Edition c

  • Slides: 62
Download presentation
第八章 物件與類別 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc.

第八章 物件與類別 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1

物件 物件(object)由狀態(state)和行為(behvior)組成。 狀態定義物件,行為決定物件的動作。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education,

物件 物件(object)由狀態(state)和行為(behvior)組成。 狀態定義物件,行為決定物件的動作。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 5

類別 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All

類別 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 7

利用UML表示法來表示 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All

利用UML表示法來表示 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 8

範例程式 8. 1 Test. Simple. Circle. java F 目的:演示建立物件、指定數據與使用 方法。 Test. Simple. Circle Run

範例程式 8. 1 Test. Simple. Circle. java F 目的:演示建立物件、指定數據與使用 方法。 Test. Simple. Circle Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 9

範例程式 8. 3 TV. java 範例程式 8. 4 Test. TV. java F 目的:演示建立物件、指定數據與使用 方法。

範例程式 8. 3 TV. java 範例程式 8. 4 Test. TV. java F 目的:演示建立物件、指定數據與使用 方法。 TV Test. TV Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 10

建構函式 Circle() { } 建構函式(constructor)為一 個特別的方法,用以建構 物件。 Circle(double new. Radius) { radius = new.

建構函式 Circle() { } 建構函式(constructor)為一 個特別的方法,用以建構 物件。 Circle(double new. Radius) { radius = new. Radius; } Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 11

利用建構函式建立物件 new Class. Name(); 範例: new Circle(); new Circle(5. 0); Liang, Introduction to Java

利用建構函式建立物件 new Class. Name(); 範例: new Circle(); new Circle(5. 0); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 13

透過址參變數存取物件 物件的存取可透過址參變數(reference variables),也就 是指向物件的參考。 這類變數可使用以下語法宣告: Class. Name object. Ref. Var; 範例: Circle my. Circle;

透過址參變數存取物件 物件的存取可透過址參變數(reference variables),也就 是指向物件的參考。 這類變數可使用以下語法宣告: Class. Name object. Ref. Var; 範例: Circle my. Circle; Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 15

宣告/建立物件於同一敘述 Class. Name object. Ref. Var = new Class. Name(); 指定址參變數 建立一個物件 範例: Circle

宣告/建立物件於同一敘述 Class. Name object. Ref. Var = new Class. Name(); 指定址參變數 建立一個物件 範例: Circle my. Circle = new Circle(); Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 16

存取物件資料與方法 F 物件裡的資料項目: object. Ref. Var. data e. g. , my. Circle. radius F

存取物件資料與方法 F 物件裡的資料項目: object. Ref. Var. data e. g. , my. Circle. radius F 呼叫物件裡的方法: object. Ref. Var. method. Name(arguments) e. g. , my. Circle. get. Area() Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 17

animation 追蹤程式碼 宣告 my. Circle = new Circle(5. 0); my. Circle no value SCircle

animation 追蹤程式碼 宣告 my. Circle = new Circle(5. 0); my. Circle no value SCircle your. Circle = new Circle(); your. Circle. radius = 100; Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 18

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle no value Circle

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle no value Circle your. Circle = new Circle(); your. Circle. radius = 100; 建立一個 Circle 物件 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 19

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value Circle

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value Circle your. Circle = new Circle(); your. Circle. radius = 100; 指定址參變數給 my. Circle Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 20

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value your.

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value your. Circle no value Circle your. Circle = new Circle(); your. Circle. radius = 100; 宣告 your. Circle Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 21

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value your.

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value your. Circle no value Circle your. Circle = new Circle(); your. Circle. radius = 100; 建立一個新的 Circle 物件 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 22

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value Circle

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value Circle your. Circle = new Circle(); your. Circle. radius = 100; your. Circle reference value 指定址參變數給 your. Circle Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 23

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value Circle

animation 追蹤程式碼 Circle my. Circle = new Circle(5. 0); my. Circle reference value Circle your. Circle = new Circle(); your. Circle. radius = 100; your. Circle reference value 改變your. Circle中 的變數radius Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 24

警告 還記得我們曾經利用: Math. method. Name(arguments) (e. g. , Math. pow(3, 2. 5)) 來呼叫Math類別裡的方法。我們可否利用Circle. get.

警告 還記得我們曾經利用: Math. method. Name(arguments) (e. g. , Math. pow(3, 2. 5)) 來呼叫Math類別裡的方法。我們可否利用Circle. get. Area() 來呼叫 get. Area() 呢?答案是不行。 Math類別裡的所有方法都是靜態方法, 也就是使用static關鍵字所定義的。然而,get. Area() 是個實例方法, 而非靜態。因此必須透過物件來呼叫,利用: object. Ref. Var. method. Name(arguments) (e. g. , my. Circle. get. Area()). 更進一步的討論可見8. 7小節 ” 靜態變數、常數及方法 “ 。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 25

參考資料項目可以是址參型態。比方說,以下這個Student 類別包含一個String型態的資料項目name。 public class Student { String name; // name has default value null

參考資料項目可以是址參型態。比方說,以下這個Student 類別包含一個String型態的資料項目name。 public class Student { String name; // name has default value null int age; // age has default value 0 boolean is. Science. Major; // is. Science. Major has default value false char gender; // c has default value 'u 0000' } Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 26

null值 如果址參型態的資料項目沒指向任何物件, 該資料型態即儲存了一個特殊的Java值, null。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson

null值 如果址參型態的資料項目沒指向任何物件, 該資料型態即儲存了一個特殊的Java值, null。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 27

資料項目預設值 址參型態的資料項目預設值(default field values) 為null,數值型態的預設值為 0,布林型態為 false,char型態則為u 0000。然而,Java並不會 為方法內的區域變數指定預設值。 public class Test { public

資料項目預設值 址參型態的資料項目預設值(default field values) 為null,數值型態的預設值為 0,布林型態為 false,char型態則為u 0000。然而,Java並不會 為方法內的區域變數指定預設值。 public class Test { public static void main(String[] args) { Student student = new Student(); System. out. println("name? " + student. name); System. out. println("age? " + student. age); System. out. println("is. Science. Major? " + student. is. Science. Major); System. out. println("gender? " + student. gender); } } Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 28

範例 Java並不會為方法內的區域變數指定預設值 public class Test { public static void main(String[] args) { int x;

範例 Java並不會為方法內的區域變數指定預設值 public class Test { public static void main(String[] args) { int x; // x has no default value String y; // y has no default value System. out. println("x is " + x); System. out. println("y is " + y); } } 編譯錯誤:未初始化變數 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 29

基本型態變數與址參型態變數的不同 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All

基本型態變數與址參型態變數的不同 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 30

拷貝基本型態變數與址參型態變數 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All

拷貝基本型態變數與址參型態變數 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 31

Garbage Collection 如前頁右下角圖所示,執行指定敘述c 1 = c 2之後,c 1會指向c 2所指的相同物件。 之前c 1所指向的物件不再被需要,因而 被稱作垃圾(garbage)。Garbage會占據 記憶體空間,因此,Java的執行系統 (runtime

Garbage Collection 如前頁右下角圖所示,執行指定敘述c 1 = c 2之後,c 1會指向c 2所指的相同物件。 之前c 1所指向的物件不再被需要,因而 被稱作垃圾(garbage)。Garbage會占據 記憶體空間,因此,Java的執行系統 (runtime system)會偵測這些garbage,並 自動回收其占據的空間。這個過程被稱 作garbage collection。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 32

Garbage Collection 提示:如果知道某物件不再被需要, 可明確地將null指定給該物件的 址參變數。如果沒有任何址參 變數指向該物件,JVM便會自 動回收其佔據的空間。 Liang, Introduction to Java Programming, Ninth Edition,

Garbage Collection 提示:如果知道某物件不再被需要, 可明確地將null指定給該物件的 址參變數。如果沒有任何址參 變數指向該物件,JVM便會自 動回收其佔據的空間。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 33

Date 類別 – 範例 舉例來說,下列的程式碼: java. util. Date date = new java. util. Date();

Date 類別 – 範例 舉例來說,下列的程式碼: java. util. Date date = new java. util. Date(); System. out. println(date. to. String()); 會印出下列字串: Sun Mar 09 13: 50: 19 EST 2003. Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 35

Random類別 我們已使用過Math. random() 取得介於 0. 0與1. 0之間(不包 括 1. 0)的隨機double數�。另一種�生隨機數字的方式是 使用java. util. Random類別 Liang,

Random類別 我們已使用過Math. random() 取得介於 0. 0與1. 0之間(不包 括 1. 0)的隨機double數�。另一種�生隨機數字的方式是 使用java. util. Random類別 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 36

Random類別 - 範例 如果兩個Random物件帶有相同種子,它們便會�生相同 的數字序列。舉個例子,以下程式碼使用相同種子 3,建 立兩個Random物件。 Random random 1 = new Random(3); System.

Random類別 - 範例 如果兩個Random物件帶有相同種子,它們便會�生相同 的數字序列。舉個例子,以下程式碼使用相同種子 3,建 立兩個Random物件。 Random random 1 = new Random(3); System. out. print("From random 1: "); for (int i = 0; i < 10; i++) System. out. print(random 1. next. Int(1000) + " "); Random random 2 = new Random(3); System. out. print("n. From random 2: "); for (int i = 0; i < 10; i++) System. out. print(random 2. next. Int(1000) + " "); From random 1: 734 660 210 581 128 202 549 564 459 961 From random 2: 734 660 210 581 128 202 549 564 459 961 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 37

顯示GUI元件 當開發程式建立圖形使用者介面時,我們會使用 一些Java類別,諸如JFrame、JButton、 JRadio. Button、JCombo. Box及JList等等,來建立 方框、按鈕、radio按鈕、文字清單方塊、範例程 式,等等。下方範例程式利用JFrame類別,建立 兩個視窗: Test. Frame Liang, Introduction to

顯示GUI元件 當開發程式建立圖形使用者介面時,我們會使用 一些Java類別,諸如JFrame、JButton、 JRadio. Button、JCombo. Box及JList等等,來建立 方框、按鈕、radio按鈕、文字清單方塊、範例程 式,等等。下方範例程式利用JFrame類別,建立 兩個視窗: Test. Frame Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. Run 38

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame 1. set. Size(200, 150); frame 1. set. Visible(true); JFrame frame 2 = new JFrame(); frame 2. set. Title("Window 2"); frame 2. set. Size(200, 150); frame 2. set. Visible(true); 宣告、建立與指 定於同一敘述 frame 1 reference : JFrame title: width: height: visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 39

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame 1. set. Size(200, 150); frame 1. set. Visible(true); JFrame frame 2 = new JFrame(); frame 2. set. Title("Window 2"); frame 2. set. Size(200, 150); frame 2. set. Visible(true); frame 1 reference 設定 title 的屬性 : JFrame title: "Window 1" width: height: visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 40

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame 1. set. Size(200, 150); frame 1. set. Visible(true); JFrame frame 2 = new JFrame(); frame 2. set. Title("Window 2"); frame 2. set. Size(200, 150); frame 2. set. Visible(true); frame 1 reference : JFrame title: "Window 1" width: 200 height: 150 visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 設定 size 的屬性 41

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame 1. set. Size(200, 150); frame 1. set. Visible(true); JFrame frame 2 = new JFrame(); frame 2. set. Title("Window 2"); frame 2. set. Size(200, 150); frame 2. set. Visible(true); frame 1 reference : JFrame title: "Window 1" width: 200 設定 visible 的屬性 height: 150 visible: true Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 42

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame 1. set. Size(200, 150); frame 1. set. Visible(true); JFrame frame 2 = new JFrame(); frame 2. set. Title("Window 2"); frame 2. set. Size(200, 150); frame 2. set. Visible(true); frame 1 reference : JFrame title: "Window 1" width: 200 height: 150 visible: true frame 2 reference 宣告、建立和指 定於同一敘述 : JFrame title: width: height: visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 43

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame 1. set. Size(200, 150); frame 1. set. Visible(true); JFrame frame 2 = new JFrame(); frame 2. set. Title("Window 2"); frame 2. set. Size(200, 150); frame 2. set. Visible(true); frame 1 reference : JFrame title: "Window 1" width: 200 height: 150 visible: true frame 2 reference : JFrame title: "Window 2" width: height: visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 設定 title 的屬性 44

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame 1. set. Size(200, 150); frame 1. set. Visible(true); JFrame frame 2 = new JFrame(); frame 2. set. Title("Window 2"); frame 2. set. Size(200, 150); frame 2. set. Visible(true); frame 1 reference : JFrame title: "Window 1" width: 200 height: 150 visible: true frame 2 reference : JFrame title: "Window 2" width: 200 height: 150 visible: Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 設定 size 的屬性 45

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame

animation 追蹤程式碼 JFrame frame 1 = new JFrame(); frame 1. set. Title("Window 1"); frame 1. set. Size(200, 150); frame 1. set. Visible(true); JFrame frame 2 = new JFrame(); frame 2. set. Title("Window 2"); frame 2. set. Size(200, 150); frame 2. set. Visible(true); frame 1 reference : JFrame title: "Window 1" width: 200 height: 150 visible: true frame 2 reference : JFrame title: "Window 2" width: 200 height: 150 visible: true Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 設定 visible 的屬性 46

實例變數及方法 實例變數(instance variable)屬於一個特 定的實例。 實例方法(instance method) 則被類別中的實 例所呼叫。 Liang, Introduction to Java Programming, Ninth

實例變數及方法 實例變數(instance variable)屬於一個特 定的實例。 實例方法(instance method) 則被類別中的實 例所呼叫。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 48

靜態變數、常數及方法 靜態變數(static variables),又稱作類別變數 (class variables),讓所有的類別實例皆可分享 資料。 靜態方法(static methods)可在沒有建立類別實 例的情況下被呼叫。 靜態常數(static constants)為所有的類別實例皆可分 享的最終變數。 Liang, Introduction

靜態變數、常數及方法 靜態變數(static variables),又稱作類別變數 (class variables),讓所有的類別實例皆可分享 資料。 靜態方法(static methods)可在沒有建立類別實 例的情況下被呼叫。 靜態常數(static constants)為所有的類別實例皆可分 享的最終變數。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 49

靜態變數、常數及方法 使用static修飾符來宣告靜待變數、常數及方法。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc.

靜態變數、常數及方法 使用static修飾符來宣告靜待變數、常數及方法。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 50

靜態變數、常數及方法 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All

靜態變數、常數及方法 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 51

範例程式 8. 7 Circle. With. Static. Members. java 範例程式 8. 8 Test. Circle. With.

範例程式 8. 7 Circle. With. Static. Members. java 範例程式 8. 8 Test. Circle. With. Static. Members. java 目標: 演示實例與靜態變數的作用及使用 方法。此範例加入了一個 靜態變數 number. Of. Objects 來追蹤物件Circle 所產生的數據。 Circle. With. Static. Members Test. Circle. With. Static. Members Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 52

private修飾字將存取限制於其定義的類別中,預設修飾字則將 存取限制於package裡,而public修飾字則不對存取做限制。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc.

private修飾字將存取限制於其定義的類別中,預設修飾字則將 存取限制於package裡,而public修飾字則不對存取做限制。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 54

註釋 物件不可以存取自己的private方法,如下圖(b)所示。然而, 如果這個物件宣告於同一類別中則可行,如下圖(a)所示。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education,

註釋 物件不可以存取自己的private方法,如下圖(b)所示。然而, 如果這個物件宣告於同一類別中則可行,如下圖(a)所示。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 55

為何資料項目應被封裝? 以保護數據 以減少類別的維護成本 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education,

為何資料項目應被封裝? 以保護數據 以減少類別的維護成本 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 56

資料項目封裝 – 範例 Circle. With. Private. Data. Fields Test. Circle. With. Private. Data. Fields

資料項目封裝 – 範例 Circle. With. Private. Data. Fields Test. Circle. With. Private. Data. Fields Run Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 57

傳遞物件給方法 F 傳遞基本型態� (數值被傳給基本型態變數) F 傳遞址參 (傳遞的數據為物件的址參) Test. Pass. Object Liang, Introduction to Java

傳遞物件給方法 F 傳遞基本型態� (數值被傳給基本型態變數) F 傳遞址參 (傳遞的數據為物件的址參) Test. Pass. Object Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. Run 58

傳遞物件給方法 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All

傳遞物件給方法 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 59

物件陣列 Circle[] circle. Array = new Circle[10]; 物件陣列實際上即是一個址參變數陣列。 因此,呼叫circle. Array[1]. get. Area() 涉及兩 層的址參,如圖

物件陣列 Circle[] circle. Array = new Circle[10]; 物件陣列實際上即是一個址參變數陣列。 因此,呼叫circle. Array[1]. get. Area() 涉及兩 層的址參,如圖 8. 19所示。circle. Array指向 一整個陣列的位址;而circle. Array[1] 則是 指向一個Circle物件的位址。 Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 60

物件陣列 Circle[] circle. Array = new Circle[10]; Liang, Introduction to Java Programming, Ninth Edition,

物件陣列 Circle[] circle. Array = new Circle[10]; Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 61

範例程式 8. 12 Total. Area. java 計算出圓形的面積總和 Total. Area Liang, Introduction to Java Programming,

範例程式 8. 12 Total. Area. java 計算出圓形的面積總和 Total. Area Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. Run 62