JAVA程式設計思想學習筆記(八)介面

2021-09-02 20:09:54 字數 1207 閱讀 7379

抽象方法:這種方法不完整,僅有宣告而沒有方法體。所採用的語法如下:

abstract void f();
抽象類:包含抽象方法的類叫做抽象類,如果乙個類包含乙個或多個抽象方法,該類必須被限定為抽象的。

關鍵字:inte***ce

介面定義了乙個完全的抽象類,它根本就沒有提供任何具體的實現。它允許建立者確定方法名、引數列表和返回型別,但是沒有任何方法體。介面只提供形式,而未提供任何具體實現。

要建立介面,要用inte***ce代替class關鍵字。

當要實現乙個介面時,在介面中定義的方法必須被定義為public的,否則,它只能得到預設的包訪問許可權。

當將乙個具體類和多個介面組合在一起的時候,這個具體類必須放在前面,後面跟著的才是介面。

通過繼承,可以很容易的在介面中新增新的方法宣告,還可以通過接觸在介面中組合數個介面。

你放入介面中的任何域都自動是static和final的,所以介面就成為了一種很便捷的用來建立常量的工具。

介面可以巢狀在類或其他介面中。巢狀介面也可以是private型別,實現private介面只是一種方式,它可以強制該介面中的方法定義不要新增任何型別資訊。(也就是說不許向上轉型)

注:

介面的很多應用都和設計模式有關,這裡就不多介紹,直接在設計模式中再做詳細說明。另外,覺得最後總結,作者說的很有啟發,這裡摘抄部分。

「確定介面是理想選擇,因而應該總是選擇介面而不是具體的類」這其實是一種引誘。當然,對於建立類,幾乎在任何時刻,都可以替代為建立乙個介面和乙個工廠。

許多人都掉進了這種**的陷阱, 只要有可能就去建立介面和工廠。 這種邏輯看起來好像是因為需要使用不同的具體實現, 因此總是應該新增這種抽象性。 這實際上已經變成了一種萃率的設計優化。

任何抽象性都應該是應真正的需求而產生的。 當必需時, 你應該重構介面而不是到處新增額外級別的間接性, 並由此帶來的額外的複雜性。 這種額外的複雜性非常顯著, 如果你讓某人去處理這種複雜性, 只是因為你意識到由於以防萬一而新增了新介面, 而沒有其他更有說服力的原因, 那麼好吧, 如果我碰上了這種事, 那麼就會質疑此人所作的所有設計了。

恰當的原則應該是優先選擇類而不是介面 。 從類開始, 如果介面的必需性變得非常明確, 那麼就進行重構。 介面是一種重要的工具, 但是它們容易被濫用。

《Java程式設計思想》學習筆記 介面

介面和內部類為我們提供一種將介面與實現分離的更加結構化發方法 將介面從具體的實現中解耦使得介面可以應用於多種不同的具體實現,因此 具有更好的復用性 工廠方法模式,不同的產品可以有不同的實現,不同的工廠可以生成不同的實際產品物件。這樣,產品物件和工廠之間達到了完全的分離解耦,我們可以任意的更換工廠,以...

Java程式設計思想讀書筆記(二) 介面

抽象方法 僅有宣告而沒有方法體。抽象類 包含乙個或者多個抽象方法的類,必須定義為抽象的 抽象類也可以沒有抽象方法 目的 組織建立這個類的物件。1.inte ce 預設是default許可權 可以新增public修飾符。2.inte ce中的變數都是 public static final 修飾的,介...

java程式設計思想學習筆記 容器

陣列 儲存的基本資料型別 物件,但是陣列的尺寸恆定。容器 存放物件object,可自定義調整自己的尺寸 set中元素無序,但是不能有重複的元素 list必須按照插入的順序儲存元素,元素可重複 map存放成對的 鍵值對 物件 使用鍵來查詢值 collection介面是存放一組物件的方法 方法 在移除某...