物件與類

shaoneng111發表於2018-08-31

使用預定義類

  • 標準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++中的私有繼承和保護繼承。

相關文章