面向對象程序設計概述
- OOP
- 結構化過程化程序設計
- 對象
- 類
- 類構造對象的過程稱為創建類的實例
- 封裝
- 實例域
- 方法
- 對象狀態
- 實現封裝的關鍵在于絕不讓類中的方法直接方位其他類的實例域
- 繼承
- 對象
- 對象的行為
- 對象的狀態
- 對象標識
- 識別類
- 類之間的關系
- 依賴(use-a)
- 聚合(has-a)
- 繼承(is-a)
- 類之間的關系及UML符號
使用預定義類
- 對象與對象變量
- LocalDate類
- 更改器方法和訪問器方法
自定義類
- 構造器
- 隱式參數,顯示參數
- 封裝的優點
- 基于類的訪問權限
- 私有方法
- final實例域
靜態域,靜態方法
- 靜態域
- 靜態常量
- 靜態方法
- 工廠方法
- main方法
方法參數
- 按值調用(Java使用)
- 按引用調用
- 參數類型
- 基本數據類型
- 對象引用
對象構造
- 重載
- 默認域初始化
域將被默認初始化,但局部變量必須明確初始化
- 無參數構造器
- 顯示域初始化(在執行構造器之間賦值)
- 參數名
- 調用另一個構造器(this(...))
- 初始化塊
調用構造器的具體步驟
- 所有數據域被默認初始化
- 按照在類的聲明中的順序依次執行域初始化和塊初始化
- 如果構造器第一行調用了第二個構造器,則執行第二個構造器
- 執行這個構造器主體
靜態初始化塊將在類被加載時執行
- 對象析構與finalize方法
不要依賴finalize方法釋放短缺資源,該方法由垃圾回收器執行
包
包用于將類組織起來
- 導入類
- 靜態導入
- 將類放入包中
- 包作用域
類路徑
- 文件系統子目錄
- Jar包
- 類路徑之間用分號:相隔
- javac編譯器總是在當前路徑查找文件
- Java虛擬機如果未指定類路徑,包含當前目錄,如果指定了類路徑,必須顯示包含當前目錄(.)才包含當前目錄
- 設置類路徑
- 命令選項
java -classpath /home/chenyq/classdir:.:/home/usr/archives/archives.jar Test
- CLASSPATH環境變量
#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
類設計技巧
- 一定要保證數據私有
- 一定要對數據進行初始化
- 不要在類中使用過多的基本類型
- 不是所有的域都需要獨立的域訪問器和域更改器
- 將職責過多的類進行分解
- 類名和方法名要能夠體現他們的職責
- 有限使用不可變的類