1. 程式人生 > >Java千百問_05面向對象(005)_接口和抽象類有什麽差別

Java千百問_05面向對象(005)_接口和抽象類有什麽差別

src ack function 興趣 沒有 序列 面向 問題 serial

點擊進入_很多其它_Java千百問

1、接口和抽象類有什麽差別

在Java語言中。抽象類abstract class和接口interface是抽象定義的兩種機制。

正是因為這兩種機制的存在,才賦予了Java強大的面向對象能力。抽象類abstract class和接口interface在對於抽象定義方面具有非常大的類似性。甚至能夠相互替換。因此非常多開發人員在進行抽象定義時對二者的選擇顯得比較任意。事實上,兩者之間還是有非常大的差別。對於它們的選擇能反映出對問題本質的理解、對設計意圖的理解。

了解抽象類看這裏:java中抽象概念怎樣體現的
了解接口看這裏:java中接口究竟是什麽
了解很多其它繼承看這裏:java類的繼承有什麽意義

詳細例如以下:
技術分享
了解is-a,has-a,like-a關系看這裏:is-a,has-a,like-a是什麽

2、interface應用在什麽場合

  1. 類與類之間須要特定的接口進行協調,而不在乎其怎樣實現。
  2. 作為能夠實現特定功能的標識存在,也能夠是什麽接口方法都沒有的純粹標識。如序列化接口:Serializable
  3. 須要將一組類視為單一的類,而調用者僅僅通過接口來與這組類發生聯系。
  4. 須要實現特定的多項功能,而這些功能之間可能全然沒有不論什麽聯系。

3、abstract class應用在什麽場合

  1. 定義了一組接口,但又不想強迫每一個實現類都必須實現全部的接口。

    能夠用abstract class定義一組方法體,甚至能夠是空方法體,然後由子類選擇自己所感興趣的方法來覆蓋。

  2. 某些場合下。僅僅靠純粹的接口不能滿足類與類之間的協調,還必需類中表示狀態的屬性來差別不同的關系。

  3. 規範了一組相互協調的方法。當中一些方法是共同的。與狀態無關的,能夠共享的,無需子類分別實現;而還有一些方法卻須要各個子類依據自己特定的狀態來實現特定的功能。
‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); });

    Java千百問_05面向對象(005)_接口和抽象類有什麽差別