方法的重寫:
1)發(fā)生在父子類中,方法簽名(名稱、參數(shù)列表)相同,方法體不同
2)重寫方法調(diào)用看對(duì)象的類型,也就是new出來(lái)的類型
重寫與重載的區(qū)別:
重寫(Override)是發(fā)生在父子類中,方法名稱相同,參數(shù)列表相同,方法體不同;遵循"運(yùn)行期"綁定,根據(jù)對(duì)象的類型來(lái)調(diào)用方法。
重載(Overload)是發(fā)生在一個(gè)類中,方法名稱相同,參數(shù)列表不同,方法體不同;遵循"編譯期"綁定,根據(jù)參數(shù)(引用)的類型來(lái)綁定方法。
package:作用是避免類的命名沖突,其有層次結(jié)構(gòu),類的全稱為----包名.類名。
同包的類不能同名,但是不同包的類是可以同名的,另外建議包名所有字母都小寫。
import:作用是導(dǎo)入不同包的類,使一個(gè)類能訪問(wèn)其他包的類。(當(dāng)然,也可以使用類的全稱來(lái)訪問(wèn))。
訪問(wèn)控制修飾符:
public:公共的,任何類
private:私有的,本類
protected:受保護(hù)的,本類、子類、同包類
默認(rèn)(不寫):本類、同包類
類中的訪問(wèn)修飾采用以上四種都可以。
static:靜態(tài)的
1)靜態(tài)變量(static修飾):屬于類,存儲(chǔ)在方法區(qū)中,只有一份;常通過(guò)類名點(diǎn)來(lái)訪問(wèn);用于所有對(duì)象所共享的數(shù)據(jù)(圖片、音頻、視頻等)。
2)靜態(tài)方法(static修飾):屬于類,存儲(chǔ)在方法區(qū)中,只有一份;常通過(guò)類名點(diǎn)來(lái)訪問(wèn);靜態(tài)方法中沒(méi)有隱式的this傳遞,靜態(tài)方法不能直接訪問(wèn)實(shí)例成員;用于方法的操作僅與參數(shù)相關(guān)而與對(duì)象無(wú)關(guān)。
3)靜態(tài)塊(static修飾):屬于類的,在類被加載期間自動(dòng)執(zhí)行的,因?yàn)轭愔槐患虞d一次,所以靜態(tài)塊也只執(zhí)行一次;用與加載/初始化靜態(tài)資源(圖片、音頻、視頻等)。
final:最終的、不可改變的
1)修飾變量:變量不能被改變
2)修飾方法:方法不能被重寫
3)修飾類:類不能被繼承
static final:static final 修飾的成員變量稱為常量,必須聲明同時(shí)初始化,并且不可被改變。常量建議所有字母大寫,多個(gè)單詞用_分隔。編譯器在編譯時(shí)將常量直接替換為具體的值,效率高。
現(xiàn)在對(duì)之前俄羅斯方塊每個(gè)圖形類,有一個(gè)新的要求,在調(diào)用print方法打印圖形四個(gè)格子的坐標(biāo)時(shí),輸出“I am a X”。例如:打印T類中cells四個(gè)坐標(biāo)的時(shí)候,要求輸出“I am a T”。(之前print定義在父類Tetromino中)
我們可以通過(guò)在子類重寫print方法來(lái)實(shí)現(xiàn):
主方法測(cè)試代碼:
運(yùn)行結(jié)果:
通過(guò)重寫方法成功滿足要求,當(dāng)然在父類的print方法設(shè)置參數(shù),調(diào)用傳參也可實(shí)現(xiàn)。