SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
1
物件封裝
學習目標
• 瞭解封裝觀念與實現
• 定義類別、建構式與方法
• 使用方法重載與不定長度引數
• 瞭解static成員
2
封裝物件初始流程
• 管理儲值卡的應用程式
3
• 定義建構式(Constructor)
4
• 那麼你封裝了什麼?
• 你用了Java的建構式語法,實現物件初始化
流程的封裝
5
封裝物件操作流程
• 進行儲值的動作
6
7
• 定義方法(Method)
8
9
10
• CashCard的使用者,現在可以這麼撰寫:
• 你封裝了什麼呢?你封裝了儲值的流程
11
12
封裝物件內部資料
• 你「希望」使用者如下撰寫程式
• 使用者可以如下撰寫程式
13
• 使用private關鍵字
14
15
16
17
18
• 你封裝了什麼?封裝了類別私有資料,讓使
用者無法直接存取
• 必須透過你提供的操作方法,經過定義的流
程才有可能存取私有資料
• 封裝主要就是隱藏物件細節,將物件當作黑
箱進行操作
19
public權限修飾
20
• 如果沒有宣告權限修飾的成員,只有在相同
套件的類別程式碼中,才可以直接存取,也
就是「套件範圍權限」
21
• 其他套件的類別程式碼,想存取某套件的類
別或物件成員
22
關於建構式
• 與類別名稱同名,無需宣告傳回型態的方法
• 成員a與text會初始兩次
23
24
• 沒有撰寫任何建構式,編譯器會自動加入一
個無參數、內容為空的預設建構式
• 自行撰寫了建構式,編譯器就不會自動建立
預設建構式
25
• 重載(Overload)建構式
26
• 定義方法時也可以進行重載
• 編譯時期,會根據參數型態或個數,決定要
呼叫的對應方法
27
• 也可根據參數列個數的不同來設計特定流程
實作
28
• 自動裝箱、拆箱問題
29
• 沒有裝箱動作前可符合引數個數與型態的方法
• 裝箱動作後可符合引數個數與型態的方法
• 嘗試有不定長度引數(稍後說明)並可符合引
數型態的方法
• 找不到合適的方法,編譯錯誤
30
• 在建構式參數與物件資料成員同名時,可用
this加以區別
31
32
• 物件初始區塊
33
• 物件資料成員上也可以宣告final
34
35
• 每個Ball實例都有自己的radius與PI成員
36
• static類別成員
• 被宣告為static的成員,是將類別名稱作為
名稱空間
37
• System.out、System.in呢?
38
39
• 在static方法或區塊不能出現this關鍵字
40
41
• 有些程式碼,想在位元碼載入後執行,可以
定義static區塊
42
• import static語法
43
44
• 不定長度引數
45
• 不定長度引數是編譯器蜜糖
46
• 內部類別
47
• 被宣告為static的內部類別,通常是將外部
類別當作名稱空間
48
49
• 方法中也可以宣告類別
50
• C++傳值呼叫(Call by value)、傳參呼叫(
Call by reference)
• Java當中只有傳值呼叫
51
52
53

Weitere ähnliche Inhalte

Mehr von Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTLJustin Lin
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSPJustin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletJustin Lin
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式Justin Lin
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題Justin Lin
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步Justin Lin
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能Justin Lin
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換Justin Lin
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構Justin Lin
 

Mehr von Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
 

CH05:物件封裝