類都是用來描述對象的?

    在面嚮對象語言Java中,所有的對象都是通過類來描述,但是類都是用來描述對象的嗎?

    我們會想到什麼呢?Yeah,它就是抽象類!如果一個類並沒有足夠的信息去描述一個具體的對象,那麼,就應該把類定義爲抽象類。比如,當我們需要用一個類來定義一組具有共同屬性和行爲,但是又不需要給出行爲的具體實現,這時,我們可以將此類定義爲抽象類。抽象類往往用來表示我們在對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。這時,我們就可以得出一個簡單的結論:抽象類的作用就是用來定義一些共同的屬性或行爲但又不需要不用給出具體的實現。這時,你會聯想到什麼?

    接口!接口的作用就是用來定義一些實現類必須實現的行爲。其實,一個接口就是一個只存在抽象方法或靜態常量的抽象類。在關係方面來說,類的繼承是強是關係(意思就是,你必須是以我爲父類所衍生的子類),例如:人,必須是動物的一種。而接口的實現則是弱是關係(意思是,你是我的一部分,不是我的子類,就像眼睛是動物的一部分)。

    我比較喜歡使用接口,而不喜歡使用繼承。天知道,這個類什麼時候還要繼承另外一個類!Java只允許單繼承,也就是一個類只能有一個父類,而不能有很多父類,就像在現實生活中,你只可能也必須只有一個親生父親,而你的父類可以有很多個孩子。而接口就不存在這種限制,就好像你要我去一個地方,你管我是走路、擠公交、打的或者是飛機等等,我只要去到那裏就成。當然,我可以走路走一段,擠公交擠一段,另外一段可能搭飛機去了。相對於類的繼承來說,接口具有很大的靈活性,因爲一個類可以實現多個接口。靈活,意味着難控制,也意味着可移植性強。工廠模式也不過如此吧。

    做事,都有要留有餘地,做人,就更要有餘地。其實,接口也體現了這個道理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章