PM擼代碼之Android【武俠篇:封裝、繼承、多態】

來源:互聯網
上載者:User

標籤:android

80 PM擼代碼之Android【武俠篇:封裝、繼承、多態】

這是Android系列的第六篇文章,在之前的一篇文章中,已經瞭解了物件導向的基礎概念,這一篇將會通過武俠江湖的類比,講解物件導向的更多內容,感謝小夥伴們一直以來的支援。

武林門派的三個特徵

1 獨門秘籍(封裝)

2 傳承的門派(繼承)

3 看情況使功夫和換個姿勢說明問題(多態)

【封裝】1 門派獨門秘籍(封裝)

前一篇已經說到,當達摩上了嵩山以後,江湖就正式進入門派時代。每個門派區別於其他門派,肯定是因為這個門派擁有獨門武功秘籍。舉個栗子你就懂了:

  • 少林派獨門秘籍:《易筋經》、《九陽神功》、《少林七十二絕技》

  • 丐幫獨門秘籍:《降龍十八掌》、《打狗棒法》

  • 逍遙派獨門秘籍:《北冥神功》、《八荒六合唯我獨尊功》、《天山折梅手》

對應的物件導向的程式中,一個類(注意停頓。。。)區別於另外一個類的重要原因就是這個類擁有自己的封裝屬性。封裝的作用,就是保護某些屬性和方法不被外部看見,就像武俠裡,每個門派的獨門秘籍和功夫套路,基本上是傳內不傳外的。

換句話說,就是你門派的獨門秘籍(私人屬性),別人不能隨便訪問,只有通過一定的方法才能訪問,這樣讓屬於你門派的東西更加安全。

2 如何封裝
武俠版幫派 丐幫{    獨門秘籍 降龍十八掌;     獨門秘籍 打狗棒法;}----------------------------------程式版class GaiBang{    private String Xianglong;    private String Dagou;}(程式封裝是通過關鍵字private(加粗)哦)
3 你為什麼需要秘籍呢?

(1)創立門派需要秘籍

假如你是逍遙老祖,它是無崖子、天山童姥、李秋水的師傅,虛竹的師祖。你窮盡畢生心血創立的武功,總是需要一個秘密的地方存放的吧,不然隨便就被別人學了過去,你還怎麼當絕頂高手啊?(我覺得逍遙老祖是金庸系列裡功夫排名前5的狠角色。。。)

門派 逍遙派{    獨門秘籍 神秘的秘籍書;    窮盡心血寫就秘籍(書){        神秘的秘籍書=書    }    獲得之前寫的秘籍(){        時空閃回,讓你回憶起自己之前寫的秘籍;    }    對外吹牛    {        我們逍遙派的絕頂神功是神秘的秘籍書(加粗),像你這樣的,我們一個打你們八個,怎麼樣,加入我們吧,目前開班價9.9折,一共998,你就能把北冥神功帶回家。    }}真實發生的故事(){    逍遙派 逍遙老祖;    逍遙老祖是逍遙派出身的;    逍遙老祖窮盡畢生心血寫就“北冥神功”,並把它存入門派;    逍遙老祖在某次高峰論壇使用了技能“對外吹牛”;}

(2)在程式世界裡,你需要私人屬性(加private),它們不能輕易訪問,只能通過一定的方法訪問(通過setget方法即可完成對封裝屬性的訪問和設定)。

class XiaoYao{    private String book;//聲明私人屬性(秘籍)    //聲明吹牛方法(加粗),使用者向小白宣傳你的門派    void talk(){        System.out.println(“我們逍遙派的絕頂神功是”+getBook()+“,像你這樣的,我們一個打你們八個,怎麼樣,加入我們吧,目前開班價9.9折,一共998,你就能把北冥神功帶回家。”)    }    //setBook方法用於將你畢生心血寫就的秘籍存入私人屬性book中,你終於可以安心的翻牌睡覺了。。。    public void setBook(String str){        book=str;    }    //getBook方法用於在你的門派內部將秘籍取出,記得洗乾淨手哈。。。    public void getBook(){        return book;    }}public class Test{    public static void main(String[] args){        XiaoYao XiaoYaoLaoZu=new XiaoYao;        XiaoYaoLaoZu.setBook(“北冥神功”);        XiaoYaoLaoZu.talk();}setBook把“北冥神功”傳入了你的門派,然後你通過“吹牛方法”調用了getBook,將你剛才傳入的秘籍說給大家聽。
【繼承】

史上最困擾哲學家的一個問題:這個世界上究竟是先有蛋,還是先有雞呢?我們這裡不討論哲學的終極問題,說到這裡,哲學的終極問題有哪些呢?我還挺感興趣的,有空瞭解一下^_^。

扯遠了,武俠的世界跟Java的世界真是高度類似,就連繼承都很一致。

武俠世界裡,門派也是有繼承關係的,舉個栗子:

(1)少林派是其他所有門派的祖先

(2)天鷹教出自明教

(3)星宿派出自逍遙派

無論是什麼情況,你的門派只能繼承另一個門派,而不能是同時繼承兩個門派。

(1)你創立一個門派想同時繼承武當和丐幫,你想得很美,想同時學會太極拳和降龍十八掌,但是你願意,人家不願意,白搭。。。

(2)但是這樣的繼承是允許的:星宿派出自逍遙派,逍遙派出自少林達摩

門派 少林{    武功 基礎拳腳功夫;}門派 逍遙派 繼承 少林派{    武功 八荒六合唯我獨尊功;}門派 星宿派 繼承 逍遙派{    武功 化功大法;}(因為是繼承關係,逍遙派和星宿派都會少林派的基礎拳腳功夫)

而在Java的世界裡,一個類也只可以繼承另一個類,而不能同時繼承多個類。對於物件導向的程式而言,它的精華在於類的繼承可以以既有的類為基礎,進而派生出新的類。

class ShaoLin{    String BasicKongfu;}class XiaoYao extends ShaoLin{    String bahuangliuheweiwoduzungong;}class XingXiu extends XiaoYao{    String huagongdafa;}(Java中類的繼承要用到關鍵字extends哦,不要忘記了)
【多態】

多態在程式中就是方法的重載和重寫。什麼是重載和重寫呢?

(1)重載:方法名稱相同,參數的類型和個數不同
重載在武俠世界裡,就像看情況使功夫,根據你的套路不同,而選擇不同的對策。少林寺非常出名的“少林72絕技”,根據你使用的不同套路,達摩院的掌院和尚就能識別出你是用的哪些功夫:

功夫 少林72絕技{    你耍了一套功夫(拳法){        你使用了少林羅漢拳;    }    你耍了一套功夫(拳法,指法){        你使用了少林羅漢拳和無相劫指;    }    你耍了一套功夫(拳法,腳法,指法){        你使用了你使用了少林羅漢拳和無相劫指,還有如影隨形腿;    }}

用程式語言就像下面,重載就是根據你傳入的參數個數來選擇調用不同的構造方法。

class ShaoLin72JueJi{    public void ShaoLin72JueJi(String quan){            System.out.println("你使用了少林羅漢拳");    }    public void ShaoLin72JueJi(String quan,String zhi){        System.out.println("你使用了少林羅漢拳和無相劫指");    }    public void ShaoLin72JueJi(String quan,String jiao,String zhi){        System.out.println("你使用了少林羅漢拳和無相劫指,還有如影隨形腿");    }}

(2)重寫:方法名稱、參數的類型、傳回值類型全部相同,但完成的功能不同

重寫往往出現在子類繼承父類中,武俠裡,星宿派出自逍遙派,他們的獨家內功是一樣的,逍遙派對外宣稱他們的獨門內功是“北冥神功”,而星宿派對外宣稱他們的獨門內功是“化功大法”。其實就是“換個姿勢說明問題”。

門派 逍遙派{    對外吹牛(){        逍遙派獨門內功——北冥神功;    }}門派 星宿派 繼承 逍遙派{    對外吹牛(){        星宿派獨門內功——化功大法;    }}

程式語言是這樣的。。。

class XiaoYao{    public void DuJiaNeiGong(){        System.out.println("逍遙派獨門內功——北冥神功");    }}class XingXiu extends XiaoYao{    public void DuJiaNeiGong(){        System.out.println("星宿派獨門內功——化功大法");    }}

PM擼代碼之Android【武俠篇:封裝、繼承、多態】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.