摘要:抽象類和抽象方法抽象方法這種方法是不完整的,僅有聲明而沒有方法。創建抽象類和抽象方法非常有用,因為他們可以使累的抽象性明確起來,并告訴用戶和編譯器打算怎樣來使用它們。接口用于建立類于類之間的協議。與抽象類相同,防止客戶端程序員創建該類對象。
點擊進入我的博客
接口和內部類為我們提供了一種將接口與實現分離的更加結構化的方法。
9.1抽象類和抽象方法抽象方法:這種方法是不完整的,僅有聲明而沒有方法。用abstract修飾的方法。
抽象類:包含抽象方法的類叫做抽象類。如果一個類包含一個或多個抽象方法,該類必須被限定為抽象的。用abstract修飾的類。
可以創建一個沒有抽象方法的抽象類。
創建抽象類和抽象方法非常有用,因為他們可以使累的抽象性明確起來,并告訴用戶和編譯器打算怎樣來使用它們。抽象類還是很有用的重構工具,因為它們使得我們可以很容易地將公共方法沿著繼承層次結構向上移動。
9.2 接口interface關鍵字產生類一個完全抽象的類(接口),它根本沒有任何具體實現。
一個接口表示:所有實現了該特定接口的類看起來都像這樣。
接口用于建立類于類之間的協議。
接口中的域:默認是public、static和final的。
接口中的方法只能是public的,而且默認就是public的。
9.3 完全解耦復用代碼的第一種方式是客戶端程序員遵循該接口來編寫它們自己的類。
策略設計模式更詳細的請看設計模式!??!
根據所傳遞的參數對象的不同而具有不同行為的方法。
這類方法包含所要執行的算法中固定不變的部分,而“策略”包含變化的部分。
策略就是傳遞進去的參數對象。
public class Test { static void process(Processor p) { p.process(); } public static void main(String[] args) { Test.process(new Processor1()); Test.process(new Processor2()); } } interface Processor { void process(); } class Processor1 implements Processor { public void process() { System.out.println("1"); } } class Processor2 implements Processor { public void process() { System.out.println("2"); } }適配器設計模式
你經常會無法修改你想使用的類,因為一般你是使用第三方的類庫。
適配器模式把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。
9.4 Java中的多重繼承Java最多只能繼承一個類,但是可以實現多個接口
一個類可以向上轉型成任何一個接口。
使用接口的原因:
為了能夠向上轉型成為多個基類類型。
與抽象類相同,防止客戶端程序員創建該類對象。
抽象類OR接口:
如果要創建不帶任何方法定義和成員變量的基類,那么就應該選擇接口而不是抽象類。
事實上,如果知道某事物應該成為一個基類,那么第一選擇應該是使它成為一個接口。
9.5 通過繼承來擴展接口接口可以繼承其他接口
接口可以一次性繼承多個其他接口
9.5.1 組合接口時的名字沖突完全相同的方法不會有問題
interface I1 { void f();} interface I2 { int f(int i);} interface I3 { int f();} class C { int f() { return 0; } } // 兩個方法重載 class C2 implements I1, I2 { public void f() { } public int f(int i) { return 0; } } // 重載 class C3 extends C implements I2 { public int f(int i) { return 0; } } // 相同的方法沒問題,同時重寫兩個方法 class C4 extends C implements I3 { public int f() { return 4; } } // 此時是有問題的 class C5 extends C implements I1 { }9.6 適配接口
接口最吸引人的原因之一就是允許同一個接口具有多個不同的具體實現。
9.7 接口中的域因為接口中的域是public、static和final的,所以接口可以用來創建常量組(盡量避免這么做!)。
9.7.1 初始化接口中的域在接口中定義的域不能是空final,但是可以被非常量表達式初始化。
static代碼塊不能出現在接口中
9.8 嵌套接口接口可以嵌套在類或其他接口中。
類內部的接口可以有四種權限控制符。
接口內部的接口可以只能是public的。
當實現某個接口時,不需要實現嵌套在其內部的任何接口。
9.9 接口與工廠接口是實現多重繼承的途徑,而生成遵循某個接口的對象的典型方法就是工廠方法。
這與直接調用構造器不同,我們在工廠對象上調用的是創建方法,而該工廠對象將生成接口的某個實現的對象。
9.10 總結優先使用類而不是接口!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72197.html
摘要:的構造器經過重載可以接受多種輸出目的地,不過最常用的還是和。組號為表示整個表達式,組號表示被第一對括號括起的組,依此類推。有多個重載的構造器,可以接受和對象。 點擊進入我的博客 字符串操作是計算機程序設計中最常見的行為 13.1 不可變String String底層是由char[]實現的,是不可變的??雌饋頃淖僑tring的方法,實際上都是創建了一個新的String對象,任何指向它...
摘要:包命名規范使用小寫字母。包訪問權限為把類聚在一個包中的做法提供了意義和理由。接口訪問權限使用關鍵字,意味著被它修飾的成員對所有類可見。繼承訪問權限基類的創建者希望某些特定成員,把它的訪問權限賦予派生類也不是所有類。 點擊進入我的博客 6.1包:庫單元 import java.util.ArrayList; import java.util.*; 當編寫一個Java源代碼文件(編譯單...
摘要:在設計模式中,所有的設計模式都遵循這一原則。其實就是說在應用程序中,所有的類如果使用或依賴于其他的類,則應該依賴這些其他類的抽象類,而不是這些其他類的具體類。使用設計模式是為了可重用代碼讓代碼更容易被他人理解保證代碼可靠性。 這是劉意老師的JAVA基礎教程的筆記講的賊好,附上傳送門 傳智風清揚-超全面的Java基礎 一、面向對象思想設計原則 1.單一職責原則 其實就是開發人員經常說的高...
摘要:迭代器通常被成為輕量級對象創建它的代價很小。與迭代器可以用于數組和所有對象,之所以能夠工作,是因為繼承了接口。 點擊進入我的博客 我覺得本章名字改成容器似乎更好理解,持有對象讓人感到一頭霧水我們需要在任意時刻和任意位置創建任意數量的對象,所以依靠創建命名的引用來持有對象已經滿足不了需求。Java可以用數組和其他容器類來(List、Set、Queue、Map)來解決這個問題,不同的容器...
摘要:接口與類型信息關鍵字的一種重要目標就是允許程序員隔離構件,進而降低耦合性。如果你編寫接口,那么就可以實現這一目標,但是通過類型信息,這種耦合性還是會傳播出去接口并非是對解耦的一種無懈可擊的保障。 點擊進入我的博客 運行時類型信息使得你可以在運行時發現和使用類型信息,主要有兩種方式: 傳統的RTTI,它假定我們在編譯時已經知道了所有的類型; 反射機制,它允許我們在運行時發現和使用類的...
閱讀 3076·2021-11-24 10:34
閱讀 3332·2021-11-22 13:53
閱讀 2637·2021-11-22 12:03
閱讀 3604·2021-09-26 09:47
閱讀 3013·2021-09-23 11:21
閱讀 4807·2021-09-22 15:08
閱讀 3301·2021-07-23 10:59
閱讀 1263·2019-08-29 18:31