SlideShare a Scribd company logo
Submit Search
Upload
Java SE 8 技術手冊第 5 章 - 物件封裝
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
6 likes
•
3,392 views
1
of
74
Java SE 8 技術手冊第 5 章 - 物件封裝
•
6 likes
•
3,392 views
Report
Share
Download Now
Download to read offline
Technology
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
Java SE 8 技術手冊第 3 章 - 基礎語法 by
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
5.3K views
•
52 slides
Java SE 8 技術手冊第 4 章 - 認識物件 by
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
4.2K views
•
91 slides
Java SE 8 技術手冊第 2 章 - 從JDK到IDE by
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
5.3K views
•
66 slides
Java SE 8 技術手冊第 1 章 - Java平台概論 by
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
11.6K views
•
44 slides
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2 by
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
5.6K views
•
66 slides
CH1:Java平台概論 by
CH1:Java平台概論
Justin Lin
1.3K views
•
41 slides
More Related Content
What's hot
Ch02 撰寫與設定Servlet by
Ch02 撰寫與設定Servlet
Justin Lin
1K views
•
37 slides
Apache Sling Generic Validation Framework by
Apache Sling Generic Validation Framework
Radu Cotescu
1.7K views
•
21 slides
Ch02 撰寫與設定 Servlet by
Ch02 撰寫與設定 Servlet
Justin Lin
352 views
•
37 slides
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式 by
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Justin Lin
19.2K views
•
53 slides
도메인구현 KSUG 20151128 by
도메인구현 KSUG 20151128
beom kyun choi
18K views
•
78 slides
JavaScript for ABAP Programmers - 3/7 Syntax by
JavaScript for ABAP Programmers - 3/7 Syntax
Chris Whealy
3.3K views
•
122 slides
What's hot
(20)
Ch02 撰寫與設定Servlet by Justin Lin
Ch02 撰寫與設定Servlet
Justin Lin
•
1K views
Apache Sling Generic Validation Framework by Radu Cotescu
Apache Sling Generic Validation Framework
Radu Cotescu
•
1.7K views
Ch02 撰寫與設定 Servlet by Justin Lin
Ch02 撰寫與設定 Servlet
Justin Lin
•
352 views
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式 by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Justin Lin
•
19.2K views
도메인구현 KSUG 20151128 by beom kyun choi
도메인구현 KSUG 20151128
beom kyun choi
•
18K views
JavaScript for ABAP Programmers - 3/7 Syntax by Chris Whealy
JavaScript for ABAP Programmers - 3/7 Syntax
Chris Whealy
•
3.3K views
Comparable/ Comparator by Sean McElrath
Comparable/ Comparator
Sean McElrath
•
1.2K views
CH04:認識物件 by Justin Lin
CH04:認識物件
Justin Lin
•
421 views
Collections in Java by Khasim Cise
Collections in Java
Khasim Cise
•
815 views
AWS基礎 by Keisuke Higo
AWS基礎
Keisuke Higo
•
1.4K views
CH1. 簡介 Web 應用程式 by Justin Lin
CH1. 簡介 Web 應用程式
Justin Lin
•
1.2K views
CH03:基礎語法 by Justin Lin
CH03:基礎語法
Justin Lin
•
530 views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走
Justin Lin
•
274 views
Java collections notes by Surendar Meesala
Java collections notes
Surendar Meesala
•
1.5K views
[AWSマイスターシリーズ] Amazon SQS / SNS by Amazon Web Services Japan
[AWSマイスターシリーズ] Amazon SQS / SNS
Amazon Web Services Japan
•
40.9K views
Generics C# by Raghuveer Guthikonda
Generics C#
Raghuveer Guthikonda
•
3.2K views
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk by Amazon Web Services Japan
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
Amazon Web Services Japan
•
21K views
Jvm分享20101228 by lunfu zhong
Jvm分享20101228
lunfu zhong
•
2.2K views
深入淺出 Web 容器 - Tomcat 原始碼分析 by Justin Lin
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
•
3.8K views
Dependency Injection and Autofac by meghantaylor
Dependency Injection and Autofac
meghantaylor
•
5.3K views
Viewers also liked
Java SE 8 技術手冊第 10 章 - 輸入輸出 by
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
2.6K views
•
48 slides
Java SE 8 技術手冊第 8 章 - 例外處理 by
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
3.2K views
•
70 slides
Java SE 8 技術手冊第 6 章 - 繼承與多型 by
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
3.5K views
•
78 slides
Java SE 8 技術手冊第 9 章 - Collection與Map by
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
4.9K views
•
81 slides
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註 by
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
2.8K views
•
84 slides
Java SE 8 技術手冊第 17 章 - 反射與類別載入器 by
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Justin Lin
2.3K views
•
50 slides
Viewers also liked
(20)
Java SE 8 技術手冊第 10 章 - 輸入輸出 by Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
•
2.6K views
Java SE 8 技術手冊第 8 章 - 例外處理 by Justin Lin
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
•
3.2K views
Java SE 8 技術手冊第 6 章 - 繼承與多型 by Justin Lin
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
•
3.5K views
Java SE 8 技術手冊第 9 章 - Collection與Map by Justin Lin
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
•
4.9K views
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註 by Justin Lin
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
•
2.8K views
Java SE 8 技術手冊第 17 章 - 反射與類別載入器 by Justin Lin
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Justin Lin
•
2.3K views
Java SE 8 技術手冊第 16 章 - 整合資料庫 by Justin Lin
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
•
2.9K views
Java SE 8 技術手冊第 11 章 - 執行緒與並行API by Justin Lin
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
•
3.7K views
Java SE 8 技術手冊第 13 章 - 時間與日期 by Justin Lin
Java SE 8 技術手冊第 13 章 - 時間與日期
Justin Lin
•
3.4K views
Java SE 8 技術手冊第 7 章 - 介面與多型 by Justin Lin
Java SE 8 技術手冊第 7 章 - 介面與多型
Justin Lin
•
2.7K views
Java SE 8 技術手冊第 15 章 - 通用API by Justin Lin
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
•
2.2K views
Python 起步走 by Justin Lin
Python 起步走
Justin Lin
•
7.2K views
3D 之邏輯與美感交會 - OpenSCAD by Justin Lin
3D 之邏輯與美感交會 - OpenSCAD
Justin Lin
•
1.4K views
淺談 Groovy 與 Gradle by Justin Lin
淺談 Groovy 與 Gradle
Justin Lin
•
8.4K views
從 REPL 到 IDE by Justin Lin
從 REPL 到 IDE
Justin Lin
•
2.3K views
Java 8 與 retrolambda by Justin Lin
Java 8 與 retrolambda
Justin Lin
•
5K views
Java SE 7 技術手冊 - 課後練習解答 by Justin Lin
Java SE 7 技術手冊 - 課後練習解答
Justin Lin
•
6.6K views
資料結構 by Justin Lin
資料結構
Justin Lin
•
1.8K views
從模組到類別 by Justin Lin
從模組到類別
Justin Lin
•
1.7K views
進階主題 by Justin Lin
進階主題
Justin Lin
•
3K views
Similar to Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝 by
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
2.6K views
•
75 slides
物件封裝 by
物件封裝
Justin Lin
1.1K views
•
74 slides
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型 by
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
2.5K views
•
78 slides
5, initialization & cleanup by
5, initialization & cleanup
ted-xu
283 views
•
18 slides
Model 設定與 Seeding by
Model 設定與 Seeding
Shengyou Fan
6.8K views
•
50 slides
Chapter 4 models by
Chapter 4 models
Ekman Hsieh
152 views
•
26 slides
Similar to Java SE 8 技術手冊第 5 章 - 物件封裝
(20)
Java SE 7 技術手冊投影片第 05 章 - 物件封裝 by Justin Lin
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
•
2.6K views
物件封裝 by Justin Lin
物件封裝
Justin Lin
•
1.1K views
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型 by Justin Lin
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
•
2.5K views
5, initialization & cleanup by ted-xu
5, initialization & cleanup
ted-xu
•
283 views
Model 設定與 Seeding by Shengyou Fan
Model 設定與 Seeding
Shengyou Fan
•
6.8K views
Chapter 4 models by Ekman Hsieh
Chapter 4 models
Ekman Hsieh
•
152 views
模块一-Go语言特性.pdf by czzz1
模块一-Go语言特性.pdf
czzz1
•
23 views
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註 by Justin Lin
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
•
2.2K views
2, object oriented programming by ted-xu
2, object oriented programming
ted-xu
•
290 views
kotlin-big-nerd-ranch ch4 function by MinHan Hong
kotlin-big-nerd-ranch ch4 function
MinHan Hong
•
162 views
Model 設定與 Seeding by Shengyou Fan
Model 設定與 Seeding
Shengyou Fan
•
40.4K views
Web development with zend framework by thinkinlamp
Web development with zend framework
thinkinlamp
•
14.3K views
認識物件 by Justin Lin
認識物件
Justin Lin
•
1.1K views
合久必分,分久必合 by Qiangning Hong
合久必分,分久必合
Qiangning Hong
•
5.2K views
Java Build Tool course in 2011 by Ching Yi Chan
Java Build Tool course in 2011
Ching Yi Chan
•
1.2K views
Refactoring with Patterns in PHP by Jace Ju
Refactoring with Patterns in PHP
Jace Ju
•
3.8K views
Excel VBA by Dick Lam
Excel VBA
Dick Lam
•
1K views
04 Delegation and Core Location by Tom Fan
04 Delegation and Core Location
Tom Fan
•
491 views
千呼萬喚始出來的 Java SE 7 by Justin Lin
千呼萬喚始出來的 Java SE 7
Justin Lin
•
1.9K views
2016.8.1 Design Pattern Eric by 柏亨 盧
2016.8.1 Design Pattern Eric
柏亨 盧
•
148 views
More from Justin Lin
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMail
Justin Lin
157 views
•
8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理
Justin Lin
153 views
•
30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
Ch08 自訂標籤 by
Ch08 自訂標籤
Justin Lin
133 views
•
54 slides
More from Justin Lin
(20)
Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
•
872 views
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/Security
Justin Lin
•
280 views
Ch11 簡介 JavaMail by Justin Lin
Ch11 簡介 JavaMail
Justin Lin
•
157 views
Ch10 Web 容器安全管理 by Justin Lin
Ch10 Web 容器安全管理
Justin Lin
•
153 views
Ch09 整合資料庫 by Justin Lin
Ch09 整合資料庫
Justin Lin
•
233 views
Ch08 自訂標籤 by Justin Lin
Ch08 自訂標籤
Justin Lin
•
133 views
Ch07 使用 JSTL by Justin Lin
Ch07 使用 JSTL
Justin Lin
•
161 views
Ch06 使用 JSP by Justin Lin
Ch06 使用 JSP
Justin Lin
•
250 views
Ch05 Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
204 views
Ch04 會話管理 by Justin Lin
Ch04 會話管理
Justin Lin
•
238 views
Ch03 請求與回應 by Justin Lin
Ch03 請求與回應
Justin Lin
•
236 views
14. 進階主題 by Justin Lin
14. 進階主題
Justin Lin
•
406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步
Justin Lin
•
238 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能
Justin Lin
•
153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組
Justin Lin
•
149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換
Justin Lin
•
156 views
9. 資料結構 by Justin Lin
9. 資料結構
Justin Lin
•
292 views
8. open() 與 io 模組 by Justin Lin
8. open() 與 io 模組
Justin Lin
•
245 views
7. 例外處理 by Justin Lin
7. 例外處理
Justin Lin
•
115 views
6. 類別的繼承 by Justin Lin
6. 類別的繼承
Justin Lin
•
166 views
Java SE 8 技術手冊第 5 章 - 物件封裝
2.
物件封裝 學習目標 • 瞭解封裝觀念與實現 • 定義類別、建構式與方法 •
使用方法重載與不定長度引數 • 瞭解 static 成員
3.
封裝物件初始流程 • 假設你要寫個可以管理儲 卡的應用程式值
…
4.
封裝物件初始流程 • 你的朋友要建立 5
張儲 卡的資料:值
5.
封裝物件初始流程 • 你發現到每次他在建立儲 卡物件時,都會值 作相同的初始動作
… • 在程式中出現重複的流程,往往意謂著有改 進的空間 …
6.
封裝物件初始流程 • 可以定義建構式( Constructor
)來改進這個 問題:
7.
封裝物件初始流程 • 在你重新編譯 CashCard.java
為 CashCard.class 之後,交給你的朋友 …
8.
封裝物件初始流程 • 他應該會想寫 個程式片段?哪 •
你封裝了什麼? – 你用了建構式語法,實現物件初始化流程的封裝 • 封裝物件初始化流程有什麼好處? – 拿到 CashCard 類別的使用者,不用重複撰寫物件初始 化流程,事實上,他也不用知道物件如何初始化 – 就算你修改了建構式的內容,重新編譯並給予位元碼檔 案之後, CashCard 類別的使用者也無需修改程式
9.
封裝物件操作流程 • 你的朋友使用 CashCard
建立 3 個物件,並 要再對所有物件進行儲 的動作:值
11.
封裝物件操作流程 • 那些儲 的流程重複了值 •
儲 應該是值 CashCard 物件自己處理 • 可以定義方法( Method )來解決這個問題
13.
封裝物件操作流程 • 使用 CashCard
的使用者,現在可以這麼撰 寫了:
14.
封裝物件操作流程 • 相較於先前得撰寫重複流程, CashCard
使 用者應該會比較想寫這個吧! • 你封裝了什麼 ?呢 – 你封裝了儲 的流程。 天你也許考慮每加值 哪 值 1000 元就增加一點紅利,而不像現在就算加值 5000 元也只有一點紅利,就算改變了 store() 的流程, CashCard 使用者也無需修改程式。
15.
封裝物件 部資料內 • 你「希望」使用者如下撰寫程式
… • 你的希望完全就是一廂情願,因為 CashCard 使用者還是可以如下撰寫程式, 跳過你的相關條件檢 :查
16.
封裝物件 部資料內 • 你沒有封裝
CashCard 中不想讓使用者直接 存取的私有資料, • 如果有些資料是類別所私有,可以使用 private 關鍵字定義
17.
封裝物件 部資料內
18.
封裝物件 部資料內 • 編譯器會讓使用者在直接存取 number
、 balance 與 bonus 時編譯失敗 :
19.
封裝物件 部資料內 • 如果沒辦法直接取得
number 、 balance 與 bonus ,那這段程式碼怎麼辦?
20.
封裝物件 部資料內 • 基於你的意願,
CashCard 類別上定義了 getNumber() 、 getBalance() 與 getBonus() 等取 方法值
21.
封裝物件 部資料內 • 你封裝了什麼? –
封裝了類別私有資料,讓使用者無法直接存取, 而必須透過你提供的操作方法,經過你定義的流 程才有可能存取私有資料 – 事實上,使用者也無從得知你的類別中有 些私哪 有資料,使用者不會知道物件的內部細節。
22.
何謂封裝? • 封裝目的主要就是隱藏物件細節,將物件當 作黑箱進行操作。 – 使用者會呼叫建構式,但不知道建構式的細節 –
使用者會呼叫方法,但不知道方法的流程 – 使用者也不會知道有 些私有資料哪 – 要操作物件,一律得透過你提供的方法呼叫
23.
public 權限修飾 • 假設現在為了管理需求,要將
CashCard 類 別定義至 cc.openhome.virtual 套件中 • 除了原始碼與位元碼的資料夾需求必須符合 套件階層之外,原始碼內容也得作些修改:
24.
public 權限修飾 • 你發現使用到
CashCard 的 CardApp 出錯 了
25.
public 權限修飾 • 如果沒有宣告權限修飾的成員,只有在相同 套件的類別程式碼中,才可以直接存取,也 就是「套件範圍權限」 •
如果不同套件的類別程式碼中,想要直接存 取,就會出現圖 5.4 的錯誤訊息 • 如果想在其它套件的類別程式碼中存取某套 件的類別或物件成員,則該類別或物件成員 必須是公開成員,要使用 public 加以宣告
26.
public 權限修飾
27.
關於建構式 • 在定義類別時,可以使用建構式定義物件建 立的初始流程 • 建構式是與類別名稱同名,無需宣告傳回型 態的方法
28.
關於建構式 • 如果你如下建立 Some
物件,成員 a 與 text 會初始兩次:
29.
關於建構式 • 編譯器會在你沒有撰寫任何建構式時,自動 加入預設建構式( Default
constructor ) • 沒有撰寫任何建構式時,也可以如下以無引 數方式呼叫建構式:
30.
關於建構式 • 如果自行撰寫了建構式,編譯器就不會自動 建立預設建構式 • 就只有一個具
int 參數的建構式,所以就不 可以 new Some() 來建構物件,而必須使用 new Some(1) 的形式來建構物件
31.
建構式與方法重載 • 建構物件時也許希望有對應的初始流程,可 以定義多個建構式,只要參數型態或個數不 同,這稱之為重載( Overload
)建構式
32.
• 建構時有兩種選擇,一是使用 new Some(100)
的方式,另一個是使用 new Some(100, "some text") 的方式
33.
建構式與方法重載 • 定義方法時也可以進行重載,可為類似功能 的方法提供統一名稱,但根據參數型態或個 數的不同呼叫對應的方法
34.
建構式與方法重載 • 方法重載讓程式設計人員不用苦惱方法名稱 的設計,用一致名稱來呼叫類似功能的方法 • 方法重載可根據傳遞引數的型態不同,也可 根據參數列個數的不同來設計方法重載
35.
建構式與方法重載 • 返回 型態不可作為方法重載依據,以下方值 法重載並不正確:
36.
建構式與方法重載 • 在 JDK5
之後使用方法重載時,要注意自動 裝箱、拆箱問題
37.
建構式與方法重載 • 編譯器在處理重載方法時,會依以下順序來 處理: – 還沒有裝箱動作前可符合引數個數與型態的方法 。 –
裝箱動作後可符合引數個數與型態的方法。 – 嘗試有不定長度引數(稍後說明)並可符合引數 型態的方法。 – 找不到合適的方法,編譯錯誤。
38.
使用 this • 除了被宣告為
static 的地方外, this 關 鍵字可以出現在類別中任何地方
39.
使用 this • 在建構式參數與物件資料成員同名時,可用 this
加以區別
40.
使用 this • 在
5.2.3 看到過這個程式片段:
41.
使用 this • 可以在建構式中呼叫另一個已定義的建構式
42.
• 在建構物件之後、呼叫建構式之前,若有想 執行的流程,可以使用 {}
定義
43.
使用 this • 如果區域變數宣告了
final ,表示設 後就值 不能再變動 • 物件資料成員上也可以宣告 final • 程式中其它地方不能再有對 x 設 的動作,值 否則會編譯錯誤
44.
使用 this • 那以下的程式片段
?呢 • 如果物件資料成員被宣告為 final ,但沒有 明確使用 = 指定 ,那表示延遲物件成員值 值 的指定
45.
使用 this • 在建構式執行流程中,一定要有對該資料成 員指定
的動作,否則編譯錯誤值
46.
使用 this • 如果改為以下就可以通過編譯:
47.
static 類別成員 • 建立了多個
Ball 物件,那每個 Ball 物件 都會有自己的 radius 與 PI 成員
48.
static 類別成員 • 圓周率其實是個固定的常數,不用每個物件 各自擁有,你可以在
PI 上宣告 static , 表示它屬於類別:
49.
static 類別成員 • 被宣告為
static 的成員,是將類別名稱作 為名稱空間 • 也可以將宣告方法為 static 成員
50.
static 類別成員 • 被宣告為
static 的方法,也是將類別名稱 作為名稱空間 • 雖然語法上,也是可以透過參考名稱存取 static 成員,但非常不建議如此撰寫:
51.
static 類別成員 • Java
程式設計領域,早就有許多良好命名慣 例,沒有遵守慣例並不是錯,但會造成溝通 與維護的麻煩 • 以類別命名實例來說,首字是大寫,以 static 使用慣例來說,是透過類別名稱與 . 運算子來存取
52.
static 類別成員 • 在大家都遵守命名慣例的情況下,看到首字 大寫就知道它是類別,透過類別名稱與
. 運 算子來存取,就會知道它是 static 成員 • 一直在用的 System.out 、 System.in 呢 ?
53.
static 類別成員 • 先前遇過的還有
Integer.parseInt() 、 Long.parseLong() 等剖析方法 • static 成員屬於類別所擁有,將類別名稱 當作是名稱空間是其最常使用之方式 • 在 Java SE API 中,只要想到與數學相關的功 能,就會想到 java.lang.Math ,因為有 許多以 Math 類別為名稱空間的常數與公用 方法
54.
static 類別成員
55.
static 類別成員 • 因為都是
static 成員,所以你就可以這麼 使用:
56.
static 類別成員 • 由於
static 成員是屬於類別,而非個別物 件,所以在 static 成員中使用 this ,會 是一種語意上的錯誤 • 在 static 方法或區塊(稍後說明)中不能 出現 this 關鍵字
57.
static 類別成員 • 如果你在程式碼中撰寫了某個物件資料成員 ,雖然沒有撰寫
this ,但也隱含了這個物 件某成員的意思
58.
static 類別成員 • static
方法或區塊中,也不能呼叫非 static 方法或區塊
59.
static 類別成員 • static
方法或區塊中,可以使用 static 資料成員或方法成員
60.
static 類別成員 • 如果你有些動作,想在位元碼載入後執行, 則可以定義
static 區塊
61.
static 類別成員 • 在
JDK5 之後,新增了 import static 語 法
62.
static 類別成員 • 如果一個類別中有多個
static 成員想偷懶 ,也可以使用 * • 名稱衝突編譯器可透過以下順序來解析: – 區域變數覆蓋 – 成員覆蓋 – 重載方法比對
63.
static 類別成員 • 如果編譯器無法判斷,則會回報錯誤
64.
不定長度引數 • 若方法的引數個數事先無法決定該如何處理 ?
65.
不定長度引數 • 在 JDK5
之後支援不定長度引數( Variable- length Argument )
66.
不定長度引數 • 實際上不定長度引數是編譯器蜜糖
67.
不定長度引數 • System.out.println(MathTool.sum( 1, 2,
3)) ,展開後也是變為陣列:
68.
不定長度引數 • 使用不定長度引數時,方法上宣告的不定長 度參數必須是參數列最後一個 • 使用兩個以上不定長度引數也是不合法的
69.
部類別內 • 可以在類別中再定義類別,稱之為內部類別 ( Inner
class )
70.
部類別內 • 一個被宣告為 static
的內部類別,通常是 將外部類別當作名稱空間 • 可以存取外部類別 static 成員,但不可存 取外部類別非 static 成員
71.
部類別內 • 方法中也可以宣告類別
72.
部類別內 • 實務上比較少看到在方法中定義具名的內部 類別,倒很常看到方法中定義匿名內部類別 ( Anonymous
inner class )並直接實例化
73.
傳 呼叫值
74.
傳 呼叫值 • 如果由方法中傳回物件,並指定給變數,也 是這種行為