狠狠撸
Submit Search
物件封装
Jan 20, 2018
1 like
1,108 views
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
Read less
Read more
1 of 74
Download now
Downloaded 71 times
Recommended
认识物件
认识物件
Justin Lin
?
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器认识物件 以物件觀點看待陣列 認識字串的特性
进阶主题
进阶主题
Justin Lin
?
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
从模组到类别
从模组到类别
Justin Lin
?
深入模組管理 初識物件導向 學習定義類別 定義運算子
反射与类别载入器
反射与类别载入器
Justin Lin
?
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
5. 从模组到类别
5. 从模组到类别
Justin Lin
?
深入模組管理 初識物件導向 學習定義類別 定義運算子
14. 进阶主题
14. 进阶主题
Justin Lin
?
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
资料永续与交换
资料永续与交换
Justin Lin
?
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
5. 建構式、原型與類別
5. 建構式、原型與類別
Justin Lin
?
認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
?
認識DOM操作 處理事件 掌握樣式 建立程式庫封裝細節
10. 资料永续与交换
10. 资料永续与交换
Justin Lin
?
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
进阶主题
进阶主题
Justin Lin
?
《Python 3.5 技術手冊》第 14 章投影片
从模组到类别
从模组到类别
Justin Lin
?
《Python 3.5 技術手冊》第 5 章投影片
Java SE 8 技術手冊第 5 章 - 物件封装
Java SE 8 技術手冊第 5 章 - 物件封装
Justin Lin
?
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
CH17:反射与类别载入器
CH17:反射与类别载入器
Justin Lin
?
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
10. 進入瀏覽器
10. 進入瀏覽器
Justin Lin
?
script標籤基本特性 認識async與defer 初探同源策略與CORS 認識ES6前的模組管理 使用ECMAScript模組
9. 資料結構
9. 資料結構
Justin Lin
?
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
CH04:认识物件
CH04:认识物件
Justin Lin
?
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器认识物件 以物件觀點看待陣列 認識字串的特性 知道如何查詢API文件
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
?
Java SE 7 技術手冊
4. 使用物件
4. 使用物件
Justin Lin
?
掌握this參考 運用物件實字 认识物件協定 使用符號協定
颁贬16:整合资料库
颁贬16:整合资料库
Justin Lin
?
了解JDBC架構 使用JDBC API 瞭解交易與隔離層級 認識RowSet
深入模组化
深入模组化
Justin Lin
?
認識模組的種類 處理模組依賴與封裝細節 使用模組API 建立JAR、JMOD與JIMAGE
颁贬09:颁辞濒濒别肠迟颈辞苍与惭补辫
颁贬09:颁辞濒濒别肠迟颈辞苍与惭补辫
Justin Lin
?
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
?
Java SE 7 技術手冊
9. meta-programming
9. meta-programming
Justin Lin
?
探索物件特性 判斷物件型態 認識Reflect API 結合Proxy與Reflect API
Java SE 8 技術手冊第 17 章 - 反射与类别载入器
Java SE 8 技術手冊第 17 章 - 反射与类别载入器
Justin Lin
?
取得.class檔案資訊 動態生成物件與操作方法 瞭解JDK類別載入器階層 使用ClassLoader實例
笔测迟丑辞苍面向对象开发基础篇
笔测迟丑辞苍面向对象开发基础篇
modou li
?
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
ArBing Xie
?
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
?
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 05 章 - 物件封装
Java SE 7 技術手冊投影片第 05 章 - 物件封装
Justin Lin
?
Java SE 7 技術手冊
CH05:物件封装
CH05:物件封装
Justin Lin
?
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
More Related Content
What's hot
(20)
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
?
認識DOM操作 處理事件 掌握樣式 建立程式庫封裝細節
10. 资料永续与交换
10. 资料永续与交换
Justin Lin
?
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
进阶主题
进阶主题
Justin Lin
?
《Python 3.5 技術手冊》第 14 章投影片
从模组到类别
从模组到类别
Justin Lin
?
《Python 3.5 技術手冊》第 5 章投影片
Java SE 8 技術手冊第 5 章 - 物件封装
Java SE 8 技術手冊第 5 章 - 物件封装
Justin Lin
?
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
CH17:反射与类别载入器
CH17:反射与类别载入器
Justin Lin
?
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
10. 進入瀏覽器
10. 進入瀏覽器
Justin Lin
?
script標籤基本特性 認識async與defer 初探同源策略與CORS 認識ES6前的模組管理 使用ECMAScript模組
9. 資料結構
9. 資料結構
Justin Lin
?
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
CH04:认识物件
CH04:认识物件
Justin Lin
?
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器认识物件 以物件觀點看待陣列 認識字串的特性 知道如何查詢API文件
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
?
Java SE 7 技術手冊
4. 使用物件
4. 使用物件
Justin Lin
?
掌握this參考 運用物件實字 认识物件協定 使用符號協定
颁贬16:整合资料库
颁贬16:整合资料库
Justin Lin
?
了解JDBC架構 使用JDBC API 瞭解交易與隔離層級 認識RowSet
深入模组化
深入模组化
Justin Lin
?
認識模組的種類 處理模組依賴與封裝細節 使用模組API 建立JAR、JMOD與JIMAGE
颁贬09:颁辞濒濒别肠迟颈辞苍与惭补辫
颁贬09:颁辞濒濒别肠迟颈辞苍与惭补辫
Justin Lin
?
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
?
Java SE 7 技術手冊
9. meta-programming
9. meta-programming
Justin Lin
?
探索物件特性 判斷物件型態 認識Reflect API 結合Proxy與Reflect API
Java SE 8 技術手冊第 17 章 - 反射与类别载入器
Java SE 8 技術手冊第 17 章 - 反射与类别载入器
Justin Lin
?
取得.class檔案資訊 動態生成物件與操作方法 瞭解JDK類別載入器階層 使用ClassLoader實例
笔测迟丑辞苍面向对象开发基础篇
笔测迟丑辞苍面向对象开发基础篇
modou li
?
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
ArBing Xie
?
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
?
Java SE 7 技術手冊
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
?
10. 资料永续与交换
10. 资料永续与交换
Justin Lin
?
进阶主题
进阶主题
Justin Lin
?
从模组到类别
从模组到类别
Justin Lin
?
Java SE 8 技術手冊第 5 章 - 物件封装
Java SE 8 技術手冊第 5 章 - 物件封装
Justin Lin
?
CH17:反射与类别载入器
CH17:反射与类别载入器
Justin Lin
?
10. 進入瀏覽器
10. 進入瀏覽器
Justin Lin
?
9. 資料結構
9. 資料結構
Justin Lin
?
CH04:认识物件
CH04:认识物件
Justin Lin
?
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
?
4. 使用物件
4. 使用物件
Justin Lin
?
颁贬16:整合资料库
颁贬16:整合资料库
Justin Lin
?
深入模组化
深入模组化
Justin Lin
?
颁贬09:颁辞濒濒别肠迟颈辞苍与惭补辫
颁贬09:颁辞濒濒别肠迟颈辞苍与惭补辫
Justin Lin
?
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
?
9. meta-programming
9. meta-programming
Justin Lin
?
Java SE 8 技術手冊第 17 章 - 反射与类别载入器
Java SE 8 技術手冊第 17 章 - 反射与类别载入器
Justin Lin
?
笔测迟丑辞苍面向对象开发基础篇
笔测迟丑辞苍面向对象开发基础篇
modou li
?
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
ArBing Xie
?
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
?
Similar to 物件封装
(20)
Java SE 7 技術手冊投影片第 05 章 - 物件封装
Java SE 7 技術手冊投影片第 05 章 - 物件封装
Justin Lin
?
Java SE 7 技術手冊
CH05:物件封装
CH05:物件封装
Justin Lin
?
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
14 Saving Loading and Application States
14 Saving Loading and Application States
Tom Fan
?
保存,加载和程序状态
2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric
柏亨 盧
?
I wish it will help you
闯补惫补蝉肠谤颈辫迟进阶编程
闯补惫补蝉肠谤颈辫迟进阶编程
iflytek
?
讲述箩补惫补蝉肠谤颈辫迟面向对象编程的一些要点
Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
?
笔惭读书会冲精实执行
笔惭读书会冲精实执行
Gary Hsia
?
「PM讀書會」為「產品經理菁英會(PMEG)」的子社團,成立的目的有二: 1.鼓勵成員讀書,厚實知識能量,以成為專業PM為己任。 2.鼓勵知識分享,線上線下交流,以成為產業專家為目標。
颁贬10:输入输出
颁贬10:输入输出
Justin Lin
?
瞭解串流與輸入輸出 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器
Linux File system
Linux File system
Kenny (netman)
?
Linux 檔案系統基本運作原理,LVM,Soft RAID,以及檔案系統應用。
Introduction to big data
Introduction to big data
邦宇 叶
?
Introduction to big data
Word press theme主题制作教程
Word press theme主题制作教程
pangyuxing
?
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
?
採用 RESTful Web API 架構可以大幅節省網路傳輸,與使用者更新頁面的時間。但是該從何開始呢?我們將以分別示範與說明前端與後端的程式碼,透過 AJAX 與 Post 呼叫後端 RESTful API,從範例中分享實作經驗。
How to-become-ocm1
How to-become-ocm1
xiaoshi100a
?
OCM
Semp活动 敏捷之用户故事研讨会(二)
Semp活动 敏捷之用户故事研讨会(二)
SEMP
?
敏捷的估算和计划 Agile Estimating & Planning
Semp活动 敏捷之用户故事研讨会(二)
Semp活动 敏捷之用户故事研讨会(二)
Mike Li
?
Java SE 7 技術手冊投影片第 04 章 - 认识物件
Java SE 7 技術手冊投影片第 04 章 - 认识物件
Justin Lin
?
Java SE 7 技術手冊
Chapter 4 models
Chapter 4 models
Ekman Hsieh
?
顿箩补苍驳辞读书会
Php study.20130110
Php study.20130110
bngoogle
?
ABOUT php study.
The clean coder
The clean coder
Andy Cheng
?
The clean coder 讀書心得
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
Justin Lin
?
這個投影片是搭配《Java Tutorial》課程,你可以在 CodeData 上看到所有內容,也可以直接在 Google Play 或 Pubu 上搜尋 "Java Tutorial" 以購得電子書。
Java SE 7 技術手冊投影片第 05 章 - 物件封装
Java SE 7 技術手冊投影片第 05 章 - 物件封装
Justin Lin
?
CH05:物件封装
CH05:物件封装
Justin Lin
?
14 Saving Loading and Application States
14 Saving Loading and Application States
Tom Fan
?
2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric
柏亨 盧
?
闯补惫补蝉肠谤颈辫迟进阶编程
闯补惫补蝉肠谤颈辫迟进阶编程
iflytek
?
Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
?
笔惭读书会冲精实执行
笔惭读书会冲精实执行
Gary Hsia
?
颁贬10:输入输出
颁贬10:输入输出
Justin Lin
?
Linux File system
Linux File system
Kenny (netman)
?
Introduction to big data
Introduction to big data
邦宇 叶
?
Word press theme主题制作教程
Word press theme主题制作教程
pangyuxing
?
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
?
How to-become-ocm1
How to-become-ocm1
xiaoshi100a
?
Semp活动 敏捷之用户故事研讨会(二)
Semp活动 敏捷之用户故事研讨会(二)
SEMP
?
Semp活动 敏捷之用户故事研讨会(二)
Semp活动 敏捷之用户故事研讨会(二)
Mike Li
?
Java SE 7 技術手冊投影片第 04 章 - 认识物件
Java SE 7 技術手冊投影片第 04 章 - 认识物件
Justin Lin
?
Chapter 4 models
Chapter 4 models
Ekman Hsieh
?
Php study.20130110
Php study.20130110
bngoogle
?
The clean coder
The clean coder
Andy Cheng
?
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
Justin Lin
?
More from Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
?
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
?
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
?
使用 Gradle 結合 Gradle 與 IDE 認識相依注入 使用 Spring 核心
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
?
寄送純文字郵件 寄送 HTML 郵件 寄送附檔郵件
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
?
了解 Java EE 安全概念與名詞 使用容器基本驗證與表單驗 使用 HTTPS 保密資料傳輸
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
?
了解 JDBC 架構 使用基本的 JDBC 透過 JNDI 取得DataSource 在 Web 應用程式整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
?
使用 Tag File 自訂標籤 使用 Simple Tag 自訂標籤 使用 Tag 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
?
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
?
了解 JSP 生命週期 使用 JSP 語法元素 使用 JSP 標準標籤 使用運算式語言(EL) 自訂 EL 函式
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
?
了解 Servlet 生命週期 使用 ServletConfig 與ServletContext 使用 PushBuilder 各種傾聽器的使用 繼承 HttpFilter 實作過濾器
Ch04 會話管理
Ch04 會話管理
Justin Lin
?
了解會話管理基本原理 使用 Cookie 類別 使用 HttpSession 會話管理 了解容器會話管理原理
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
?
取得請求參數與標頭 處理中文字元請求與回應 設定與取得請求範圍屬性 使用轉發、包含、重新導向
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
?
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
?
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
13.并行、平行与非同步
13.并行、平行与非同步
Justin Lin
?
認識並行、平行與非同步 使用 threading 模組 使用 multiprocessing 模組 使用 concurrent.futures模組 運用 async、await 與 asyncio
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
?
使用 pdb 模組除錯 對程式進行單元測試 使用 timeit 評測程式片段 使用 cProfile(profile)察看評測數據
11. 常用內建模組
11. 常用內建模組
Justin Lin
?
處理日期與時間 認識日誌的使用 運用規則表示式 管理檔案與目錄 URL 處理
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
?
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
7. 例外處理
7. 例外處理
Justin Lin
?
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
6. 類別的繼承
6. 類別的繼承
Justin Lin
?
瞭解繼承目的 認識鴨子定型 重新定義方法 認識 object 建立、尋找文件資源 泛型入門
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
?
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
?
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
?
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
?
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
?
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
?
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
?
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
?
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
?
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
?
Ch04 會話管理
Ch04 會話管理
Justin Lin
?
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
?
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
?
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
?
13.并行、平行与非同步
13.并行、平行与非同步
Justin Lin
?
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
?
11. 常用內建模組
11. 常用內建模組
Justin Lin
?
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
?
7. 例外處理
7. 例外處理
Justin Lin
?
6. 類別的繼承
6. 類別的繼承
Justin Lin
?
物件封装
1.
1
2.
物件封装 學習目標 ? 瞭解封裝觀念與實現 ? 定義類別、建構式與方法 ?
使用方法重載與不定長度引數 ? 瞭解static成員 2
3.
封裝物件初始流程 ? 假設你要寫個可以管理儲值卡的應用程式 … 3
4.
封裝物件初始流程 ? 你的朋友要建立5張儲值卡的資料: 4
5.
封裝物件初始流程 ? 你發現到每次他在建立儲值卡物件時,都會 作相同的初始動作 … ?
在程式中出現重複的流程,往往意謂著有改 進的空間 … 5
6.
封裝物件初始流程 ? 可以定義建構式(Constructor)來改進這個 問題: 6
7.
封裝物件初始流程 ? 在你重新編譯CashCard.java為CashCard.class 之後,交給你的朋友 … 7
8.
封裝物件初始流程 ? 他應該會想寫哪個程式片段? ? 你封裝了什麼? –
你用了建構式語法,實現物件初始化流程的封裝 ? 封裝物件初始化流程有什麼好處? – 拿到CashCard類別的使用者,不用重複撰寫物件初始化 流程,事實上,他也不用知道物件如何初始化 – 就算你修改了建構式的內容,重新編譯並給予位元碼檔 案之後,CashCard類別的使用者也無需修改程式 8
9.
封裝物件操作流程 ? 你的朋友使用CashCard建立3個物件,並要 再對所有物件進行儲值的動作: 9
10.
10
11.
封裝物件操作流程 ? 那些儲值的流程重複了 ? 儲值應該是CashCard物件自己處理 ?
可以定義方法(Method)來解決這個問題 11
12.
12
13.
封裝物件操作流程 ? 使用CashCard的使用者,現在可以這麼撰 寫了: 13
14.
封裝物件操作流程 ? 相較於先前得撰寫重複流程,CashCard使 用者應該會比較想寫這個吧! ? 你封裝了什麼呢? –
你封裝了儲值的流程。哪天你也許考慮每加值 1000元就增加一點紅利,而不像現在就算加值 5000元也只有一點紅利,就算改變了store()的 流程,CashCard使用者也無需修改程式。 14
15.
封裝物件內部資料 ? 你「希望」使用者如下撰寫程式 … ?
你的希望完全就是一廂情願,因為 CashCard使用者還是可以如下撰寫程式, 跳過你的相關條件檢查: 15
16.
封裝物件內部資料 ? 你沒有封裝CashCard中不想讓使用者直接 存取的私有資料, ? 如果有些資料是類別所私有,可以使用 private關鍵字定義 16
17.
封裝物件內部資料 17
18.
封裝物件內部資料 ? 編譯器會讓使用者在直接存取number、 balance與bonus時編譯失敗: 18
19.
封裝物件內部資料 ? 如果沒辦法直接取得number、balance與 bonus,那這段程式碼怎麼辦? 19
20.
封裝物件內部資料 ? 基於你的意願,CashCard類別上定義了 getNumber()、getBalance()與 getBonus()等取值方法? 20
21.
封裝物件內部資料 ? 你封裝了什麼? – 封裝了類別私有資料,讓使用者無法直接存取, 而必須透過你提供的操作方法,經過你定義的流 程才有可能存取私有資料 –
事實上,使用者也無從得知你的類別中有哪些私 有資料,使用者不會知道物件的內部細節。 21
22.
何謂封裝? ? 封裝目的主要就是隱藏物件細節,將物件當 作黑箱進行操作。 – 使用者會呼叫建構式,但不知道建構式的細節 –
使用者會呼叫方法,但不知道方法的流程 – 使用者也不會知道有哪些私有資料 – 要操作物件,一律得透過你提供的方法呼叫 22
23.
public權限修飾 ? 假設現在為了管理需求,要將CashCard類 別定義至cc.openhome.virtual套件中 ? 除了原始碼與位元碼的資料夾需求必須符合 套件階層之外,原始碼內容也得作些修改: 23
24.
public權限修飾 ? 你發現使用到CashCard的CardApp出錯了 24
25.
public權限修飾 ? 如果沒有宣告權限修飾的成員,只有在相同 套件的類別程式碼中,才可以直接存取,也 就是「套件範圍權限」 ? 如果不同套件的類別程式碼中,想要直接存 取,就會出現圖5.4的錯誤訊息 ?
如果想在其它套件的類別程式碼中存取某套 件的類別或物件成員,則該類別或物件成員 必須是公開成員,要使用public加以宣告 25
26.
public權限修飾 26
27.
關於建構式 ? 在定義類別時,可以使用建構式定義物件建 立的初始流程 ? 建構式是與類別名稱同名,無需宣告傳回型 態的方法 27
28.
關於建構式 ? 如果你如下建立Some物件,成員a與text會 初始兩次: 28
29.
關於建構式 ? 編譯器會在你沒有撰寫任何建構式時,自動 加入預設建構式(Default constructor) ?
沒有撰寫任何建構式時,也可以如下以無引 數方式呼叫建構式: 29
30.
關於建構式 ? 如果自行撰寫了建構式,編譯器就不會自動 建立預設建構式 ? 就只有一個具int參數的建構式,所以就不 可以new
Some()來建構物件,而必須使用 new Some(1)的形式來建構物件 30
31.
建構式與方法重載 ? 建構物件時也許希望有對應的初始流程,可 以定義多個建構式,只要參數型態或個數不 同,這稱之為重載(Overload)建構式 31
32.
? 建構時有兩種選擇,一是使用new Some(100)的方式,另一個是使用new Some(100, "some
text")的方式 32
33.
建構式與方法重載 ? 定義方法時也可以進行重載,可為類似功能 的方法提供統一名稱,但根據參數型態或個 數的不同呼叫對應的方法 33
34.
建構式與方法重載 ? 方法重載讓程式設計人員不用苦惱方法名稱 的設計,用一致名稱來呼叫類似功能的方法 ? 方法重載可根據傳遞引數的型態不同,也可 根據參數列個數的不同來設計方法重載 34
35.
建構式與方法重載 ? 返回值型態不可作為方法重載依據,以下方 法重載並不正確: 35
36.
建構式與方法重載 ? 在JDK5之後使用方法重載時,要注意自動裝 箱、拆箱問題 36
37.
建構式與方法重載 ? 編譯器在處理重載方法時,會依以下順序來 處理: – 還沒有裝箱動作前可符合引數個數與型態的方法。 –
裝箱動作後可符合引數個數與型態的方法。 – 嘗試有不定長度引數(稍後說明)並可符合引數 型態的方法。 – 找不到合適的方法,編譯錯誤。 37
38.
使用this ? 除了被宣告為static的地方外,this關鍵 字可以出現在類別中任何地方 38
39.
使用this ? 在建構式參數與物件資料成員同名時,可用 this加以區別 39
40.
使用this ? 在5.2.3看到過這個程式片段: 40
41.
使用this ? 可以在建構式中呼叫另一個已定義的建構式 41
42.
? 在建構物件之後、呼叫建構式之前,若有想 執行的流程,可以使用{}定義 42
43.
使用this ? 如果區域變數宣告了final,表示設值後就 不能再變動 ? 物件資料成員上也可以宣告final ?
程式中其它地方不能再有對x設值的動作,否 則會編譯錯誤 43
44.
使用this ? 那以下的程式片段呢? ? 如果物件資料成員被宣告為final,但沒有 明確使用=指定值,那表示延遲物件成員值的 指定 44
45.
使用this ? 在建構式執行流程中,一定要有對該資料成 員指定值的動作,否則編譯錯誤 45
46.
使用this ? 如果改為以下就可以通過編譯: 46
47.
static類別成員 ? 建立了多個Ball物件,那每個Ball物件都 會有自己的radius與PI成員 47
48.
static類別成員 ? 圓周率其實是個固定的常數,不用每個物件 各自擁有,你可以在PI上宣告static,表 示它屬於類別: 48
49.
static類別成員 ? 被宣告為static的成員,是將類別名稱作為 名稱空間 ? 也可以將宣告方法為static成員 49
50.
static類別成員 ? 被宣告為static的方法,也是將類別名稱作 為名稱空間 ? 雖然語法上,也是可以透過參考名稱存取 static成員,但非常不建議如此撰寫: 50
51.
static類別成員 ? Java程式設計領域,早就有許多良好命名慣 例,沒有遵守慣例並不是錯,但會造成溝通 與維護的麻煩 ? 以類別命名實例來說,首字是大寫,以 static使用慣例來說,是透過類別名稱與. 運算子來存取 51
52.
static類別成員 ? 在大家都遵守命名慣例的情況下,看到首字 大寫就知道它是類別,透過類別名稱與.運算 子來存取,就會知道它是static成員 ? 一直在用的System.out、System.in呢? 52
53.
static類別成員 ? 先前遇過的還有Integer.parseInt()、 Long.parseLong()等剖析方法 ? static成員屬於類別所擁有,將類別名稱當 作是名稱空間是其最常使用之方式 ?
在Java SE API中,只要想到與數學相關的功 能,就會想到java.lang.Math,因為有許 多以Math類別為名稱空間的常數與公用方法 53
54.
static類別成員 54
55.
static類別成員 ? 因為都是static成員,所以你就可以這麼使 用: 55
56.
static類別成員 ? 由於static成員是屬於類別,而非個別物件, 所以在static成員中使用this,會是一種 語意上的錯誤 ? 在static方法或區塊(稍後說明)中不能出 現this關鍵字 56
57.
static類別成員 ? 如果你在程式碼中撰寫了某個物件資料成員, 雖然沒有撰寫this,但也隱含了這個物件某 成員的意思 57
58.
static類別成員 ? static方法或區塊中,也不能呼叫非 static方法或區塊 58
59.
static類別成員 ? static方法或區塊中,可以使用static資 料成員或方法成員 59
60.
static類別成員 ? 如果你有些動作,想在位元碼載入後執行, 則可以定義static區塊 60
61.
static類別成員 ? 在JDK5之後,新增了import static語法 61
62.
static類別成員 ? 如果一個類別中有多個static成員想偷懶, 也可以使用* ? 名稱衝突編譯器可透過以下順序來解析: –
區域變數覆蓋 – 成員覆蓋 – 重載方法比對 62
63.
static類別成員 ? 如果編譯器無法判斷,則會回報錯誤 63
64.
不定長度引數 ? 若方法的引數個數事先無法決定該如何處理? 64
65.
不定長度引數 ? 在JDK5之後支援不定長度引數(Variable- length Argument) 65
66.
不定長度引數 ? 實際上不定長度引數是編譯器蜜糖 66
67.
不定長度引數 ? System.out.println(MathTool.sum( 1, 2,
3)),展開後也是變為陣列: 67
68.
不定長度引數 ? 使用不定長度引數時,方法上宣告的不定長 度參數必須是參數列最後一個 ? 使用兩個以上不定長度引數也是不合法的 68
69.
內部類別 ? 可以在類別中再定義類別,稱之為內部類別 (Inner class) 69
70.
內部類別 ? 一個被宣告為static的內部類別,通常是將 外部類別當作名稱空間 ? 可以存取外部類別static成員,但不可存取 外部類別非static成員 70
71.
內部類別 ? 方法中也可以宣告類別 71
72.
內部類別 ? 實務上比較少看到在方法中定義具名的內部 類別,倒很常看到方法中定義匿名內部類別 (Anonymous inner
class)並直接實例化 72
73.
傳值呼叫 73
74.
傳值呼叫 ? 如果由方法中傳回物件,並指定給變數,也 是這種行為 74