面向?qū)ο蟪绦蛟O計概述
- OOP
- 結構化過程化程序設計
- 對象
- 類
- 類構造對象的過程稱為創(chuàng)建類的實例
- 封裝
- 實例域
- 方法
- 對象狀態(tài)
- 實現(xiàn)封裝的關鍵在于絕不讓類中的方法直接方位其他類的實例域
- 繼承
- 對象
- 對象的行為
- 對象的狀態(tài)
- 對象標識
- 識別類
- 類之間的關系
- 依賴(use-a)
- 聚合(has-a)
- 繼承(is-a)
- 類之間的關系及UML符號
使用預定義類
- 對象與對象變量
- LocalDate類
- 更改器方法和訪問器方法
自定義類
- 構造器
- 隱式參數(shù),顯示參數(shù)
- 封裝的優(yōu)點
- 基于類的訪問權限
- 私有方法
- final實例域
靜態(tài)域,靜態(tài)方法
- 靜態(tài)域
- 靜態(tài)常量
- 靜態(tài)方法
- 工廠方法
- main方法
方法參數(shù)
- 按值調(diào)用(Java使用)
- 按引用調(diào)用
- 參數(shù)類型
- 基本數(shù)據(jù)類型
- 對象引用
對象構造
- 重載
- 默認域初始化
域?qū)⒈荒J初始化,但局部變量必須明確初始化
- 無參數(shù)構造器
- 顯示域初始化(在執(zhí)行構造器之間賦值)
- 參數(shù)名
- 調(diào)用另一個構造器(this(...))
- 初始化塊
調(diào)用構造器的具體步驟
- 所有數(shù)據(jù)域被默認初始化
- 按照在類的聲明中的順序依次執(zhí)行域初始化和塊初始化
- 如果構造器第一行調(diào)用了第二個構造器,則執(zhí)行第二個構造器
- 執(zhí)行這個構造器主體
靜態(tài)初始化塊將在類被加載時執(zhí)行
- 對象析構與finalize方法
不要依賴finalize方法釋放短缺資源,該方法由垃圾回收器執(zhí)行
包
包用于將類組織起來
- 導入類
- 靜態(tài)導入
- 將類放入包中
- 包作用域
類路徑
- 文件系統(tǒng)子目錄
- Jar包
- 類路徑之間用分號:相隔
- javac編譯器總是在當前路徑查找文件
- Java虛擬機如果未指定類路徑,包含當前目錄,如果指定了類路徑,必須顯示包含當前目錄(.)才包含當前目錄
- 設置類路徑
- 命令選項
java -classpath /home/chenyq/classdir:.:/home/usr/archives/archives.jar Test
- CLASSPATH環(huán)境變量
#Linux
export CLASSPATH=/home/chenyq/classdir:.:/home/usr/archives/archives.jar
#Windows
set CLASSPATH=C:\classdir:.:C:\archives\archives.jar
文檔注釋
- javadoc程序
- 應該為包,公有類與接口,共有的和受保護的構造器和方法,公有和受保護的域
- 類注釋
- 方法注釋
- 域注釋
- 通用注釋
- @author
- @version
- @since
- @deprecated
- @see
- 包與概述注釋
- 注釋抽取
javadoc -d docDir packageDir
類設計技巧
- 一定要保證數(shù)據(jù)私有
- 一定要對數(shù)據(jù)進行初始化
- 不要在類中使用過多的基本類型
- 不是所有的域都需要獨立的域訪問器和域更改器
- 將職責過多的類進行分解
- 類名和方法名要能夠體現(xiàn)他們的職責
- 有限使用不可變的類