繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過程。提供繼承信息的類被稱為父類(超類赌髓、基類)祝钢;得到繼承信息的類被稱為子類(派生類)。繼承讓變化中的軟件系統(tǒng)有了一定的延續(xù)性萍悴,同時(shí)繼承也是封裝程序中可變因素的重要手段头遭。繼承中最常使用的兩個(gè)關(guān)鍵字是extends(用于基本類和抽象類)和implements(用于接口)。Java中類的繼承是單一繼承癣诱,若使用extends只允許有一個(gè)父類计维,使用implements則不限。
封裝:通常認(rèn)為封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法綁定起來撕予,對(duì)數(shù)據(jù)的訪問只能通過已定義的接口鲫惶。面向?qū)ο蟮谋举|(zhì)就是將現(xiàn)實(shí)世界描繪成一系列完全自治、封閉的對(duì)象实抡。我們?cè)陬愔芯帉懙姆椒ň褪菍?duì)實(shí)現(xiàn)細(xì)節(jié)的一種封裝欠母;我們編寫一個(gè)類就是對(duì)數(shù)據(jù)和數(shù)據(jù)操作的封裝∵赫可以說赏淌,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的編程接口啄清。
Java的四種訪問控制符:
- 默認(rèn)的六水,也稱為default,在同一包內(nèi)可見,不使用任何修飾符掷贾。
- 私有的睛榄,以private修飾符指定,在同一類內(nèi)可見想帅。
- 共有的场靴,以public修飾符指定,對(duì)所有類可見港准。
- 受保護(hù)的旨剥,以protected修飾符指定,對(duì)同一包內(nèi)的類和所有子類可見叉趣。
多態(tài):多態(tài)性是指允許不同子類型的對(duì)象對(duì)同一消息作出不同的響應(yīng)泞边。簡單的說就是用同樣的對(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)訪問B系統(tǒng)提供的服務(wù)時(shí),B系統(tǒng)有多種提供服務(wù)的方式烟具,但一切對(duì)A系統(tǒng)來說都是透明的(就像電動(dòng)剃須刀是A系統(tǒng)梢什,它的供電系統(tǒng)是B系統(tǒng),B系統(tǒng)可以使用電池供電或者用交流電朝聋,甚至還有可能是太陽能嗡午,A系統(tǒng)只會(huì)通過B類對(duì)象調(diào)用供電的方法,但并不知道供電系統(tǒng)的底層實(shí)現(xiàn)是什么冀痕,究竟通過何種方式獲得了動(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)需要做兩件事:
- 方法重寫(子類繼承父類并重寫父類中已有的或抽象的方法);
- 對(duì)象造型(用父類型引用引用子類型對(duì)象腊尚,這樣同樣的引用調(diào)用同樣的方法就會(huì)根據(jù)子類對(duì)象的不同而表現(xiàn)出不同的行為)吨拗。