絕大多數的Java程式員不必關心對象的具體實現,只要保證對象滿足他們的需求就可以了。
關於OOP
OOP 詞彙表
1.encapsulation;封裝, 有時也稱為資料隱藏
2.instance field :對象中的資料被稱為實力域
3.method: 操縱資料的過程被稱為方法
4.state: 狀態
OOP 的另外一原則會讓使用者自訂Java類變得輕而易舉, 這就是:類可以通過擴充另一個類來建立。 事實上, 在Java中, 所有的類都源於一個“神通廣 大的超類”,他就是object、
對象:要想使用OOP,一定要清楚對象的三個主要特性
1.對象的行為(behavior)-----可以對對象施加哪些操作,或可以對對象施加哪些方法
2.對象的狀態(state)-----當施加那些方法時, 對象如何相應
3.對象標識(identity)----如何區分具有相同行為與狀態的不同對象
如果沒有經過方法調用而改變對象狀態, 就說明封裝性一定遭到了破壞。**************
類之間的關係
最常見的關係有: 依賴-------彙總-------繼承
如果一個類的方法操縱另一個類的對象, 我們就說一個類依賴於另一個類
應該儘可能的將相互依賴 的類減至最少。用軟體工程的術語來說:就是使類之間的耦合度最小
對象與物件變數
要想使用對象, 就必須首先構造對象, 並制定其初始狀態。 然後, 對對象施加方法。
物件變數:
可以顯式的將物件變數設定為空白(null), 表明這個物件變數目前沒有引用任何對象
一定要認識到:一個對象並沒有實際包含一個對象, 而僅僅引用一個對象
在Java中, 任何物件變數的值都是對儲存在另外一處的一個對象的引用。new操作符的傳回值也是一個引用。
變數不會自動的初始化為NULL, 而必須對它們進行初始化, 調用new或將它們設定為null
對屬性做出修改的方法 被稱為更改器方法, 僅訪問屬性而不加修改的方法被稱為訪問器方法。
靜態方法
靜態方法是不能想對象實施操作的方法。例如:Math類的Pow方法就是一個靜態方法。 運算式:Math.pow(x,a); 計算冪
。 它在運算的時候,不使用任何Math對象。換句話說, 沒有隱式的參數。
可以認為靜態方法是沒有this參數的方法(在一個非靜態方法中, this參數表示該方法的隱式參數。)
因為靜態方法不能操作對象, 所以不能在靜態方法中訪問執行個體域。但是,靜態方法可以訪問自身類中的靜態域。
在什麼時候使用靜態方法:
1.當一個方法不需要訪問對象狀態,,其所需參數都是通過顯式參數提供的。
2.當一個方法只需要訪問類的靜態域。
參 數傳遞
////*********一個方法可以修改傳遞引用所對應的變數值, 而不能修改傳遞值調用所對應的變數值***********/////////////////
在Java語言中, 方法參數的使用方式:
1.一個方法不能修改一個基礎資料型別 (Elementary Data Type)的參數(即數值型和布爾型值)
2.一個方法可以改變一個對象參數的狀態
3.一個方法不能讓對象參數引用一個新的對象。
類設計技巧:
1. 一定將資料設計為私人
2.一定要對資料初始化
3.不要在類中使用過多的基礎資料型別 (Elementary Data Type)
4.不是所有的屬性都需要獨立的屬性訪問器或屬性更改器
5.使用標準格式進行類的定義
6.將職責過多的類進行分解
7.類名和方法名要能夠體現他們的職責