国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

《Java編程思想》筆記9.接口

JessYanCoding / 3323人閱讀

摘要:抽象類和抽象方法抽象方法這種方法是不完整的,僅有聲明而沒(méi)有方法。創(chuàng)建抽象類和抽象方法非常有用,因?yàn)樗麄兛梢允估鄣某橄笮悦鞔_起來(lái),并告訴用戶和編譯器打算怎樣來(lái)使用它們。接口用于建立類于類之間的協(xié)議。與抽象類相同,防止客戶端程序員創(chuàng)建該類對(duì)象。

點(diǎn)擊進(jìn)入我的博客

接口和內(nèi)部類為我們提供了一種將接口與實(shí)現(xiàn)分離的更加結(jié)構(gòu)化的方法。

9.1抽象類和抽象方法

抽象方法:這種方法是不完整的,僅有聲明而沒(méi)有方法。用abstract修飾的方法。

抽象類:包含抽象方法的類叫做抽象類。如果一個(gè)類包含一個(gè)或多個(gè)抽象方法,該類必須被限定為抽象的。用abstract修飾的類。

可以創(chuàng)建一個(gè)沒(méi)有抽象方法的抽象類。

創(chuàng)建抽象類和抽象方法非常有用,因?yàn)樗麄兛梢允估鄣某橄笮悦鞔_起來(lái),并告訴用戶和編譯器打算怎樣來(lái)使用它們。抽象類還是很有用的重構(gòu)工具,因?yàn)樗鼈兪沟梦覀兛梢院苋菀椎貙⒐卜椒ㄑ刂^承層次結(jié)構(gòu)向上移動(dòng)。

9.2 接口

interface關(guān)鍵字產(chǎn)生類一個(gè)完全抽象的類(接口),它根本沒(méi)有任何具體實(shí)現(xiàn)。

一個(gè)接口表示:所有實(shí)現(xiàn)了該特定接口的類看起來(lái)都像這樣。

接口用于建立類于類之間的協(xié)議。

接口中的域:默認(rèn)是publicstaticfinal的。

接口中的方法只能是public的,而且默認(rèn)就是public的。

9.3 完全解耦

復(fù)用代碼的第一種方式是客戶端程序員遵循該接口來(lái)編寫它們自己的類。

策略設(shè)計(jì)模式

更詳細(xì)的請(qǐng)看設(shè)計(jì)模式!!!

根據(jù)所傳遞的參數(shù)對(duì)象的不同而具有不同行為的方法。

這類方法包含所要執(zhí)行的算法中固定不變的部分,而“策略”包含變化的部分。

策略就是傳遞進(jìn)去的參數(shù)對(duì)象。

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");
    }
}
適配器設(shè)計(jì)模式

你經(jīng)常會(huì)無(wú)法修改你想使用的類,因?yàn)橐话隳闶鞘褂玫谌降念悗?kù)。

適配器模式把一個(gè)類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無(wú)法在一起工作的兩個(gè)類能夠在一起工作。

9.4 Java中的多重繼承

Java最多只能繼承一個(gè)類,但是可以實(shí)現(xiàn)多個(gè)接口

一個(gè)類可以向上轉(zhuǎn)型成任何一個(gè)接口。

使用接口的原因:

為了能夠向上轉(zhuǎn)型成為多個(gè)基類類型。

與抽象類相同,防止客戶端程序員創(chuàng)建該類對(duì)象。

抽象類OR接口:

如果要?jiǎng)?chuàng)建不帶任何方法定義和成員變量的基類,那么就應(yīng)該選擇接口而不是抽象類。

事實(shí)上,如果知道某事物應(yīng)該成為一個(gè)基類,那么第一選擇應(yīng)該是使它成為一個(gè)接口。

9.5 通過(guò)繼承來(lái)擴(kuò)展接口

接口可以繼承其他接口

接口可以一次性繼承多個(gè)其他接口

9.5.1 組合接口時(shí)的名字沖突

完全相同的方法不會(huì)有問(wèn)題

interface I1 { void f();}
interface I2 { int f(int i);}
interface I3 { int f();}

class C {
    int f() {
        return 0;
    }
}
// 兩個(gè)方法重載
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;
    }
}
// 相同的方法沒(méi)問(wèn)題,同時(shí)重寫兩個(gè)方法
class C4 extends C implements I3 {
    public int f() {
        return 4;
    }
}
// 此時(shí)是有問(wèn)題的
class C5 extends C implements I1 {
}
9.6 適配接口

接口最吸引人的原因之一就是允許同一個(gè)接口具有多個(gè)不同的具體實(shí)現(xiàn)。

9.7 接口中的域

因?yàn)榻涌谥械挠蚴?b>public、staticfinal的,所以接口可以用來(lái)創(chuàng)建常量組(盡量避免這么做!)。

9.7.1 初始化接口中的域

在接口中定義的域不能是空final,但是可以被非常量表達(dá)式初始化。

static代碼塊不能出現(xiàn)在接口中

9.8 嵌套接口

接口可以嵌套在類或其他接口中。

類內(nèi)部的接口可以有四種權(quán)限控制符。

接口內(nèi)部的接口可以只能是public的。

當(dāng)實(shí)現(xiàn)某個(gè)接口時(shí),不需要實(shí)現(xiàn)嵌套在其內(nèi)部的任何接口。

9.9 接口與工廠

接口是實(shí)現(xiàn)多重繼承的途徑,而生成遵循某個(gè)接口的對(duì)象的典型方法就是工廠方法

這與直接調(diào)用構(gòu)造器不同,我們?cè)诠S對(duì)象上調(diào)用的是創(chuàng)建方法,而該工廠對(duì)象將生成接口的某個(gè)實(shí)現(xiàn)的對(duì)象。

9.10 總結(jié)

優(yōu)先使用類而不是接口!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72197.html

相關(guān)文章

  • Java編程思想筆記13.字符串

    摘要:的構(gòu)造器經(jīng)過(guò)重載可以接受多種輸出目的地,不過(guò)最常用的還是和。組號(hào)為表示整個(gè)表達(dá)式,組號(hào)表示被第一對(duì)括號(hào)括起的組,依此類推。有多個(gè)重載的構(gòu)造器,可以接受和對(duì)象。 點(diǎn)擊進(jìn)入我的博客 字符串操作是計(jì)算機(jī)程序設(shè)計(jì)中最常見的行為 13.1 不可變String String底層是由char[]實(shí)現(xiàn)的,是不可變的。看起來(lái)會(huì)改變String的方法,實(shí)際上都是創(chuàng)建了一個(gè)新的String對(duì)象,任何指向它...

    since1986 評(píng)論0 收藏0
  • Java編程思想筆記6.訪問(wèn)權(quán)限控制

    摘要:包命名規(guī)范使用小寫字母。包訪問(wèn)權(quán)限為把類聚在一個(gè)包中的做法提供了意義和理由。接口訪問(wèn)權(quán)限使用關(guān)鍵字,意味著被它修飾的成員對(duì)所有類可見。繼承訪問(wèn)權(quán)限基類的創(chuàng)建者希望某些特定成員,把它的訪問(wèn)權(quán)限賦予派生類也不是所有類。 點(diǎn)擊進(jìn)入我的博客 6.1包:庫(kù)單元 import java.util.ArrayList; import java.util.*; 當(dāng)編寫一個(gè)Java源代碼文件(編譯單...

    wangbjun 評(píng)論0 收藏0
  • (CZ深入淺出Java基礎(chǔ))設(shè)計(jì)模式筆記

    摘要:在設(shè)計(jì)模式中,所有的設(shè)計(jì)模式都遵循這一原則。其實(shí)就是說(shuō)在應(yīng)用程序中,所有的類如果使用或依賴于其他的類,則應(yīng)該依賴這些其他類的抽象類,而不是這些其他類的具體類。使用設(shè)計(jì)模式是為了可重用代碼讓代碼更容易被他人理解保證代碼可靠性。 這是劉意老師的JAVA基礎(chǔ)教程的筆記講的賊好,附上傳送門 傳智風(fēng)清揚(yáng)-超全面的Java基礎(chǔ) 一、面向?qū)ο笏枷朐O(shè)計(jì)原則 1.單一職責(zé)原則 其實(shí)就是開發(fā)人員經(jīng)常說(shuō)的高...

    李昌杰 評(píng)論0 收藏0
  • Java編程思想筆記11.持有對(duì)象

    摘要:迭代器通常被成為輕量級(jí)對(duì)象創(chuàng)建它的代價(jià)很小。與迭代器可以用于數(shù)組和所有對(duì)象,之所以能夠工作,是因?yàn)槔^承了接口。 點(diǎn)擊進(jìn)入我的博客 我覺得本章名字改成容器似乎更好理解,持有對(duì)象讓人感到一頭霧水我們需要在任意時(shí)刻和任意位置創(chuàng)建任意數(shù)量的對(duì)象,所以依靠創(chuàng)建命名的引用來(lái)持有對(duì)象已經(jīng)滿足不了需求。Java可以用數(shù)組和其他容器類來(lái)(List、Set、Queue、Map)來(lái)解決這個(gè)問(wèn)題,不同的容器...

    newtrek 評(píng)論0 收藏0
  • Java編程思想筆記14.類型信息

    摘要:接口與類型信息關(guān)鍵字的一種重要目標(biāo)就是允許程序員隔離構(gòu)件,進(jìn)而降低耦合性。如果你編寫接口,那么就可以實(shí)現(xiàn)這一目標(biāo),但是通過(guò)類型信息,這種耦合性還是會(huì)傳播出去接口并非是對(duì)解耦的一種無(wú)懈可擊的保障。 點(diǎn)擊進(jìn)入我的博客 運(yùn)行時(shí)類型信息使得你可以在運(yùn)行時(shí)發(fā)現(xiàn)和使用類型信息,主要有兩種方式: 傳統(tǒng)的RTTI,它假定我們?cè)诰幾g時(shí)已經(jīng)知道了所有的類型; 反射機(jī)制,它允許我們?cè)谶\(yùn)行時(shí)發(fā)現(xiàn)和使用類的...

    Hwg 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<