關於類、父類、抽象類、接口之間聯繫的一點點思考

最近稍微理了一下類、普通父類、抽象類、接口之間的聯繫,對它們的理解比之前稍微好了那麼一點。

首先先了解一下什麼是類,在這之前,我們需要了解一下java中對象的概念,其實java這種面向對象的程序語言就是爲了描述我們所處的大千世界,那麼java中的對象就是這個世界上一草一木的對應,比如我正在使用的這臺電腦,我們寢室對面的一棵樹等等,世界上每一個具體的東西都是一個對象,我想這也是java這種面嚮對象語言的由來。類呢?就是對對象的抽象化、概念化,用一個統一的代號來稱呼具有相同特徵的一堆對象,比如說:人類就是對我們人的統稱,書就是對《java從入門到精通》《大話數據結構》等的統稱。

瞭解了對象和類的基本概念後,接下來進入正題,我身邊有兩個兄弟,分別是筆記本電腦類和PC電腦類,他們有共同之處(都能上網打遊戲),也有不同之處(筆記本方便攜帶,而PC就不行),但他們從小沒有父親,兩個人相依相偎的遊蕩在這個世界上,有一天,他們找到了他們的親生父親-電腦類,他們開心極了,他們發現他們的父親居然也能打遊戲,他們終於想通了:打遊戲這個功能是從父親那裏繼承過來的,但他們又各自產生了一些變異,筆記本電腦變得容易攜帶,PC則不容易攜帶。他們的父親電腦類又接着說道:你們再仔細觀察觀察我。過了一會兒筆記本電腦類興奮的說:爸爸,你只是具有攜帶這個功能,但並沒有指明攜帶是否方便。他們的父親說:正因爲我無法確定攜帶這個動作究竟是方便還是不方便,所以特地加了個abstract修飾,也正因爲如此,我本身又不得不給我自己加個abstract緊箍咒,這也是我與普通父類的區別,對了,再告訴你們一個消息,其實你們還有其他的兄弟。說完他們的父親就走了,他們不得不繼續遊蕩下去。

只從上次這兩兄弟的父親告訴他們還有其他的兄弟之後,他們就一直搗騰着怎麼聯繫其他兄弟,終於有一天他們找到了接口-聯網接口,聯網接口告訴他們:你們必須用implements實現我,纔可以聯繫到你們的其他兄弟,他們很開心,在接口的幫助下很快聯繫到了他們的另外一個兄弟-量子計算機。

到這裏相信大家對父類,抽象類,接口之間的聯繫稍微瞭解了一下,現在總結一下:

1:將子類共同的屬性和方法提取出來,單獨形成一個類-父類

2:如果父類中的方法無法具體化,就需要我們用abstract修飾,此時普通父類就變成了抽象類

3:由於子類只能有一個親生父類,所以子類要想實現其他的一些功能就必須要實現接口,這就是接口的由來

下面我們在詳細說說編程中的具體運用:

現在有兩個類,分別是pc電腦類和筆記本


如果現在有10臺pc電腦和10檯筆記本電腦,需要我們找出他們之間運算速度最快的,怎麼辦?由於編程中我們直接將不同的類放在一起比較,所以一般我們可能先找出pc中運算最快的,然後找出筆記本運算最快的,最後在比較最快pc和最快筆記本,找到那個運算最快的。

有了父類之後,我們可以讓上面兩個類繼承電腦類,運用向上造型,通過一次循環找出那個最快的電腦


是不是解決了無法直接比較兩個類的問題,這就是父類和向上造型的魅力。

Ps:向上造型指的是父類引用指向子類對象

現在上述的coms[0]這臺pc電腦想連接其他電腦,怎麼辦?我們需要讓pc類實現連接接口,但是我們又知道coms[0]這個引用是點不出來connect這個方法的,這個時候就需要我們進行向下造型,然後再執行connect方法,是不是很贊。


通過上面的代碼coms[0]就可以聯繫其他兄弟啦。

最後總結一下:造型(向上和向下)是父類和接口 之間的重要紐帶,也只有造型才能讓他們的作用發揮出來。