CH05:物件封裝

Justin Lin
Justin LinTechnology / Community Evangelist at Free lancer
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
1 of 53

Recommended

比特币与区块链 by
比特币与区块链比特币与区块链
比特币与区块链haipome
726 views22 slides
Viabtc by
ViabtcViabtc
Viabtchaipome
196 views12 slides
区块链原理 by
区块链原理区块链原理
区块链原理Noah Chen
1K views26 slides
区块链技术创新应用 by
区块链技术创新应用区块链技术创新应用
区块链技术创新应用Hardway Hou
616 views23 slides
物件封裝 by
物件封裝物件封裝
物件封裝Justin Lin
1.1K views74 slides
Java SE 7 技術手冊投影片第 05 章 - 物件封裝 by
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝Justin Lin
2.6K views75 slides

More Related Content

More from Justin Lin

Ch14 簡介 Spring Boot by
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
872 views22 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
280 views58 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
274 views31 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
157 views8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
153 views30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
233 views92 slides

More from Justin Lin(20)

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

Recently uploaded

Hacking Facebook for fun and profit by Pranav Hivarekar by
Hacking Facebook for fun and profit by Pranav HivarekarHacking Facebook for fun and profit by Pranav Hivarekar
Hacking Facebook for fun and profit by Pranav HivarekarPranav Hivarekar
6 views69 slides
AI Technology & Development of Civilization by
AI Technology & Development of CivilizationAI Technology & Development of Civilization
AI Technology & Development of Civilizationunclebrown017
30 views74 slides
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班 by
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班IttrainingIttraining
36 views37 slides
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班 by
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班IttrainingIttraining
39 views32 slides
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式 by
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式Shengyou Fan
149 views54 slides
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班 by
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班IttrainingIttraining
39 views25 slides

Recently uploaded(6)

Hacking Facebook for fun and profit by Pranav Hivarekar by Pranav Hivarekar
Hacking Facebook for fun and profit by Pranav HivarekarHacking Facebook for fun and profit by Pranav Hivarekar
Hacking Facebook for fun and profit by Pranav Hivarekar
AI Technology & Development of Civilization by unclebrown017
AI Technology & Development of CivilizationAI Technology & Development of Civilization
AI Technology & Development of Civilization
unclebrown01730 views
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
商品辨識定位系統_艾鍗學院-AIoT智能行動服務物聯網班
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
居家雲端照護系統_艾鍗學院-AIoT智能行動服務物聯網班
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式 by Shengyou Fan
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan149 views
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班 by IttrainingIttraining
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班
AIoT 智能商店_艾鍗學院-AIoT智能行動服務物聯網班

CH05:物件封裝