經(jīng)過(guò)16年校招,自己在Java基礎(chǔ)方面也算有了一個(gè)質(zhì)的飛躍,從原來(lái)知其然,到現(xiàn)在知其所以然,現(xiàn)將學(xué)習(xí)心得總結(jié)于此。

  首先需要知道類和對(duì)象是什么?

  維基百科定義類為: an extensible program-code-template for creating objects, providing initial values for state (member variables) and implementations of behavior (member functions or methods),即能夠?yàn)閯?chuàng)建對(duì)象實(shí)例提供可擴(kuò)展的模板,提供數(shù)據(jù)和行為操作。在實(shí)現(xiàn)角度,其以字節(jié)碼的形式存儲(chǔ)在內(nèi)存中的方法區(qū),用來(lái)實(shí)例化對(duì)象。

  維基百科定義對(duì)象為:a location in memory having a value and possibly referenced by an identifier,即在內(nèi)存上一段包含數(shù)據(jù)并由某標(biāo)識(shí)符引用的區(qū)域。在實(shí)現(xiàn)角度,類對(duì)象實(shí)體存儲(chǔ)在堆內(nèi)存中,其地址存儲(chǔ)在棧上的對(duì)象引用中(即類的對(duì)象變量,其指向?qū)ο笏诘膬?nèi)存空間)。

 

  面向?qū)ο蟮奶卣饔心男┓矫??(參?a target="_blank" style="color: rgb(29, 88, 209); text-decoration: none;">Java面試題全集) 

  • 抽象:抽象是將一類對(duì)象的共同特征總結(jié)出來(lái)構(gòu)造類的過(guò)程,包括數(shù)據(jù)抽象行為抽象兩方面。抽象只關(guān)注對(duì)象有哪些屬性和行為,并不關(guān)注這些行為的細(xì)節(jié)是什么。 

  • 繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過(guò)程,提供繼承信息的類被稱為父類(超類、基類);得到繼承信息的類被稱為子類(派生類)。 

  • 封裝:通常認(rèn)為封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法綁定起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的接口。面向?qū)ο蟮谋举|(zhì)就是將現(xiàn)實(shí)世界描繪成一系列完全自治、封閉的對(duì)象。我們?cè)陬愔芯帉懙姆椒ň褪菍?duì)實(shí)現(xiàn)細(xì)節(jié)的一種封裝;我們編寫一個(gè)類就是對(duì)數(shù)據(jù)和數(shù)據(jù)操作的封裝??梢哉f(shuō),封裝就是隱藏一切可隱藏的東西,只向外界提供最簡(jiǎn)單的編程接口。 

  • 多態(tài)性多態(tài)性是指允許不同子類型的對(duì)象對(duì)同一消息作出不同的響應(yīng)。簡(jiǎn)單的說(shuō)就是用同樣的對(duì)象引用調(diào)用同樣的方法但是做了不同的事情。多態(tài)性分為編譯時(shí)的多態(tài)性運(yùn)行時(shí)的多態(tài)性。如果將對(duì)象的方法視為對(duì)象向外界提供的服務(wù),那么運(yùn)行時(shí)的多態(tài)性可以解釋為:當(dāng)A系統(tǒng)訪問(wèn)B系統(tǒng)提供的服務(wù)時(shí),B系統(tǒng)有多種提供服務(wù)的方式,但一切對(duì)A系統(tǒng)來(lái)說(shuō)都是透明的(就像電動(dòng)剃須刀是A系統(tǒng),它的供電系統(tǒng)是B系統(tǒng),B系統(tǒng)可以使用電池供電或者用交流電,甚至還有可能是太陽(yáng)能,A系統(tǒng)只會(huì)通過(guò)B類對(duì)象調(diào)用供電的方法,但并不知道供電系統(tǒng)的底層實(shí)現(xiàn)是什么,究竟通過(guò)何種方式獲得了動(dòng)力)。方法重載(overload)實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性(也稱為前綁定),而方法重寫(override)實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性(也稱為后綁定)。運(yùn)行時(shí)的多態(tài)是面向?qū)ο笞罹璧臇|西,要實(shí)現(xiàn)多態(tài)需要做兩件事:1). 方法重寫(子類繼承父類并重寫父類中已有的或抽象的方法);2). 對(duì)象造型(用父類型對(duì)象引用子類對(duì)象,這樣同樣的對(duì)象調(diào)用同樣的方法就會(huì)根據(jù)子類對(duì)象的不同而表現(xiàn)出不同的行為)。

  (1)重載與重寫

  重載: