java程式設計思想(第九章)
阿新 • • 發佈:2019-02-04
java中介面與內部類為我們提供了一種使介面與實現分離更加結構化的方法。
1、抽象方法與抽象類
抽象方法:就是一種不完整的方法,只有宣告沒有方法體。抽象方法結構如下:
abstract void function();
抽象類:含有一個或者多個抽象方法的類,包含抽象方法的類必須宣告為抽象類,抽象類可以允許沒有抽象方法。一般抽象方法如下宣告:
public abstract class Instrument {
public abstract void play();
public abstract void adjust();
public abstract String what();
}
抽象類不能直接進行例項化,就是 Instrument mInstrument=new Instrument () 是不被允許的。一般我們是對抽象類的子類進行具體例項化,例如 List list=new ArrayLists() 。
一個類繼承另外一個抽象類,若想建立該類的物件,就必須實現基類中的所有抽象方法。否則將無法建立該類的物件,並且匯出類也是抽象類。
2、介面,interface關鍵字使抽象更進一步,產生一個完全抽象的類,沒有提供任何具體的實現。(只有方法名,引數列表和返回型別,沒有任何方法體。介面只提供了形式,而未提供任何具體實現) 介面結構如下:
public interface Instrument {
void play();
void adjust();
String what();
}
介面也是一個特殊的抽象類,因為介面允許我們通過建立一個能夠被向上轉型為多種基類的型別
來實現類似於多重繼承的特性。(Java只支援單繼承,但可以通過實現介面來達到多繼承的效果)
介面中可以包含域,但是這些域隱式地是static和final的。使用implements關鍵字讓一個類遵循某個介面(或是一組介面)。它表示:”介面只是它的外貌,我們用類實現介面來宣告它是如何工作的”。
3、完全解耦
- 建立根據所傳遞的引數物件的不同而具有不同的行為的方法
- 介面卡中的程式碼將接受所擁有的介面,併產生所需要的介面。將介面從具體實現中解耦使得介面可以應用於多種不同的具體實現,因此程式碼也就更具複用性。