Java面向對象的程序設計(OOP)和如何編寫自己的類。我們知道Java是完全面向對象的,必須熟悉OOP才能編寫更好的Java程序,這與過去70年代的“結構化”、“過程化”的程序設計有著很大的區別
一、類
類(class)是構造對象的藍圖或模板。由類構造(construct)對象的過程就是創建類的實例(instance)的過程。
封裝(encapsulation)是與類有關的一個重要概念。形式上來說,封裝是把數據和行為組合在一個包中,並對對象的使用者隱藏了數據的實現方式。對象的數據稱為實例域(instance field),操作數據的過程稱為方法(method)。
繼承(inheritance)使得Java中的一個類可以通過拓展另一個類而來。實際上,Java中所有的類都是繼承了一個最原始的超類——Object。繼承而來的新類具有基類的全部屬性和方法。
二、對象
對象的三個主要特性:
1.行為(behavior)——對對象施加哪些操作或方法?
2.狀態(state)——施加方法時,對象實例域如何變化?
3.標識(identity)——如何辨別具有相同行為和狀態的不同對象?
三、類之間的關系
常見的有三種:
1.依賴(uses-a)—— 一個類的方法需要操縱另一個類的對象;
2.聚合(has-a)—— 一個類的對象包含另一個類的對象;
3.繼承(is-a)—— 具有另一個類的全部屬性和方法,拓展而來,並可以添加額外的功能。
四、自定義類
1. 類定義形式
代碼如下 復制代碼 class example例如:
代碼如下 復制代碼 class Student2. 隱式參數和顯式參數
代碼如下 復制代碼 public void setNumber(int n)//student為隱式參數,1000為顯式參數隱式(implicit)參數,出現在方法名前的類對象;顯式(explicit)參數是在方法名後括號中的參數。
3. 基於類的訪問權限
記住:方法可以訪問所調用對象的私有數據。也就是說一個類的方法可以訪問所屬類的所有對象的私有數據。
例如可以定義判斷兩個學生的equals的方法:
代碼如下 復制代碼 boolean equals(Student other)4. final實例域
將類中的實例域定義為final。構造對象時必須初始化這樣的域,構造後,不能再修改。
代碼如下 復制代碼 class Student5. 靜態域與靜態方法
靜態域:將域定義為static,每個類只能有一個這樣的域。它屬於類,不屬於任何獨立的對象。
代碼如下 復制代碼 class Employee1 2 3