使用預定義類
- 標準Java類庫分為兩個類:一個用來表示時間點的Date類;另一個用來表示大家熟悉的日曆表示法的LocalDate類。將時間與日曆分開是一種很好的物件導向設計。
封裝
注:注意不要返回引用可變物件的訪問器方法。在Employee類中就違反了這個設計原則,其中的getHireDay方法返回了一個Date類物件:
class Employee{
private Date hireDay;
...
public Date getHireDay(){
return hireDay;
}
...
}
複製程式碼
LocalDate類沒有更改器方法,與之不同,Date類有一個更改器方法setTime,可以在這裡設定毫秒數。 如果需要返回一個可變物件的引用,應該首先對它進行克隆(clone)。物件clone是指存放在另一個位置上的物件副本。
下面兩種情況下使用靜態方法:
- 一個方法不需要訪問物件狀態,其所需引數都是通過顯式引數提供(例如:Math.pow)
- 一個方法只需要訪問類的靜態域(例如:Employee.getNextId)
方法引數
Java程式設計語言對物件採用的不是引用呼叫,實際上,物件引用是按值傳遞的
- 一個方法不能修改一個基本資料型別的引數(即數值型或布林型)
- 一個方法可以改變一個物件引數的狀態
- 一個方法不能讓物件引數引用一個新的物件
包
從編譯器的角度來看,巢狀的包之間沒有任何關係。例如,java.util包與java.util.jar包沒有任何關係。每一個都擁有獨立的類集合。
繼承
Java中使用關鍵字extends代替C++中的冒號(:)。在Java中,所有的繼承都是公有繼承,而沒有C++中的私有繼承和保護繼承。