3.工具類、包裝類同仆、abstract和模板方法

工具類

存放了某一類事物的工具方法的類.
工具類存放的包:工具包(util,utils,tool/tools,helper,helpers),存放工具類.

工具類如何設(shè)計: 工具在開發(fā)中其實只需要存在一份即可.

1): 如果工具方法沒有使用static修飾,說明工具方法得使用工具類的對象來調(diào)用.
此時把工具類設(shè)計為單例的.

2): 如果工具方法全部使用static修飾,說明工具方法只需要使用工具類名調(diào)用即可.
此時必須把工具類的構(gòu)造器私有化(防止創(chuàng)建工具類對象調(diào)用靜態(tài)方法).

一般的,首選第二種,簡單. 在JDK中提供的工具類都是第二種. 如java.util.Arrays類.



包裝類

基本數(shù)據(jù)類型     Java包裝類

byte            Byte
short           Short
int             Integer
long            Long
char            Character
float           Float
double          Double
boolean         Boolean

手動裝箱

        // 手動裝箱
        Integer a = new Integer(10);
        // 手動拆箱
        int b = a.intValue();

自動裝箱 - 編譯器提供的語法糖萤捆,編譯后自動幫我們拆裝箱

        // 自動裝箱
        Integer a = 10;
        // 自動拆箱
        int b = a;
包裝類的緩存設(shè)計:

享元設(shè)計

        // 自動裝箱和valueOf會使用緩存設(shè)計
        Integer a = 10;
        Integer c = Integer.valueOf(123);
                
       //  不適用緩存設(shè)計 不推薦
        Integer b = new Integer(111);

Integer與int的區(qū)別(包裝類型和基本數(shù)據(jù)類型的區(qū)別):
1):默認值:
int的默認值是0.
Integer的默認值為null.
推論:Integer既可以表示null,又可以表示0.

2):包裝類中提供了該類型相關(guān)的很多算法操作方法.
static String toBinaryString(int i) :把十進制轉(zhuǎn)換為二進制
static String toOctalString(int i) : :把十進制轉(zhuǎn)換為八進制
static String toHexString(int i) ::把十進制轉(zhuǎn)換為十六進制

3):在集合框架中,只能存儲對象類型,不能存儲基本數(shù)據(jù)類型值.

4):請問:Integer和int是相同的數(shù)據(jù)類型嗎?不是:

5): 方法中的,基本類型變量存儲在棧中,包裝類型存放于堆中.

開發(fā)中,建議使用包裝類型.



abstract

抽象方法

使用abstract修飾且沒有方法體的方法,稱為抽象方法乓梨。
特點:
① 使用抽象abstract修飾鳖轰,方法沒有方法體清酥,留給子類去實現(xiàn)/覆蓋扶镀。
② 抽象方法修飾符不能是private 和 final以及static,為什么焰轻?
③ 抽象方法必須定義在抽象類或接口中臭觉。
一般的:習慣性把abstract寫在方法修飾符最前面,一看就知道是抽象方法辱志。

abstract class Father {
     abstract void say();
}

class  Son extends Father {
    void say(){
        
    }
}
抽象類

使用abstract關(guān)鍵字修飾的類。
特點:
① 不能創(chuàng)建實例即不能new一個抽象類,即使創(chuàng)建出抽象類對象,調(diào)用抽象方法,根本沒有方法體揩懒。
② 可以不包含抽象方法什乙,若一旦包含,該類必須作為抽象類,抽象類可以包含普通方法(留給子類調(diào)用的),抽象類是有構(gòu)造器的,子類構(gòu)造器必須先調(diào)用父類構(gòu)造器已球。
③ 若子類沒有實現(xiàn)/覆蓋父類所有的抽象方法臣镣,那么子類也得作為抽象類(抽象派生類)。
④ 構(gòu)造方法不能都定義成私有的智亮,否則不能有子類(創(chuàng)建子類對象前先調(diào)用父類構(gòu)造方法)忆某。
⑤ 抽象類不能使用final修飾,因為必須有子類阔蛉,抽象方法才能得以實現(xiàn)弃舒。
⑥ 是不完整的類,需作為父類(必須要有子類)状原,功能才能得以實現(xiàn)聋呢。
抽象類:一般的,我們起名,習慣使用Abstract作為前綴,讓調(diào)用者一看就知道是抽象類.

抽象類中可以不存在抽象方法,如此這樣沒有太大的意義,但是可以防止外界創(chuàng)建對象,所以我們會發(fā)現(xiàn)有些工具類沒有抽象方法,但是也使用abstract來修飾..

抽象類不能實例化:

抽象類和普通類的區(qū)別:
普通類有的成員(方法,字段,構(gòu)造器),抽象類都有.
抽象類不能創(chuàng)建對象,抽象類中可以包含抽象方法.



模板方法

模板方法設(shè)計模式:
在父類的一個方法中定義一個總體算法的骨架(模板方法)苗踪,而將某一些一些步驟延遲到子類中,因為不同的子類實現(xiàn)細節(jié)不同削锰。模板方法使得子類可以在不改變算法結(jié)構(gòu)的情況下徒探,重新定義算法中的某些步驟。

抽象父類負責定義操作中的業(yè)務(wù)骨架喂窟,而把某些具體的實現(xiàn)步驟延遲到子類中去實現(xiàn)测暗。

抽象父類至少提供的方法:
模板方法:一種通用的處理方式,即模板(總體算法的骨架)磨澡;
抽象方法:一種具體的業(yè)務(wù)功能實現(xiàn)碗啄,由子類完成;

注意:抽象父類提供的模版方法只是定義了一個通用算法稳摄,其實現(xiàn)必須依賴子類的輔助稚字。

abstract class AbstractCalculateLength {
    
    final public float work(){
        float total = length();
        total += 100;
        return total;
    }
    // 定義抽象方法
    abstract float length();
}

class Item extends AbstractCalculateLength {
      // 子類實現(xiàn)模板方法
    float length(){
        return 100;
    };
}


class Untitled {
    public static void main(String[] args) {
        
    Item item = new Item();
    item.work();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市厦酬,隨后出現(xiàn)的幾起案子胆描,更是在濱河造成了極大的恐慌,老刑警劉巖仗阅,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昌讲,死亡現(xiàn)場離奇詭異减噪,居然都是意外死亡短绸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門筹裕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醋闭,“玉大人,你說我怎么就攤上這事朝卒≈ぢ撸” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵抗斤,是天一觀的道長囚企。 經(jīng)常有香客問我,道長豪治,這世上最難降的妖魔是什么洞拨? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮负拟,結(jié)果婚禮上烦衣,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好花吟,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布秸歧。 她就那樣靜靜地躺著,像睡著了一般衅澈。 火紅的嫁衣襯著肌膚如雪键菱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天今布,我揣著相機與錄音经备,去河邊找鬼。 笑死部默,一個胖子當著我的面吹牛侵蒙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播傅蹂,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纷闺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了份蝴?” 一聲冷哼從身側(cè)響起犁功,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎婚夫,沒想到半個月后浸卦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡请敦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年镐躲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侍筛。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖撒穷,靈堂內(nèi)的尸體忽然破棺而出匣椰,到底是詐尸還是另有隱情,我是刑警寧澤端礼,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布禽笑,位于F島的核電站,受9級特大地震影響蛤奥,放射性物質(zhì)發(fā)生泄漏佳镜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一凡桥、第九天 我趴在偏房一處隱蔽的房頂上張望蟀伸。 院中可真熱鬧,春花似錦、人聲如沸啊掏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迟蜜。三九已至刹孔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娜睛,已是汗流浹背髓霞。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留畦戒,地道東北人酸茴。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像兢交,于是被迫代替她去往敵國和親薪捍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容