1.使用繼承的原因:
提高代碼的重用性;提高程序的擴(kuò)展性。
2.java繼承的語(yǔ)法格式:
public class 類(lèi)名(子類(lèi)、派生類(lèi)、超類(lèi))? extends 類(lèi)名(父類(lèi)、基類(lèi)) {
}
注:Java類(lèi)只能繼承一個(gè)父類(lèi)(單繼承)。
3.子類(lèi)從父類(lèi)中繼承到的屬性和方法能否被調(diào)用與訪(fǎng)問(wèn)修飾符的關(guān)系:
4.方法重寫(xiě):
① 用途:子類(lèi)和父類(lèi)有同一個(gè)方法,但需要不同實(shí)現(xiàn)時(shí),使用重寫(xiě)。
② 重寫(xiě)的條件:1.必須有繼承關(guān)系;
2.子類(lèi)在重寫(xiě)父類(lèi)的方法時(shí),子類(lèi)方法的訪(fǎng)問(wèn)修飾符必須要大于或者等于父類(lèi)方法的訪(fǎng)問(wèn)修飾符;
3.子類(lèi)在重寫(xiě)父類(lèi)的方法時(shí),子類(lèi)方法的返回值類(lèi)型,方法名,參數(shù)都必須要和父類(lèi)的完全一致。
③ 調(diào)用重寫(xiě)后的方法格式:
根據(jù)new關(guān)鍵字后的類(lèi)名來(lái)決定調(diào)用的對(duì)象是誰(shuí)的——new關(guān)鍵字后類(lèi)名是子類(lèi),那么會(huì)有限調(diào)用子類(lèi)中重寫(xiě)的方法;如果子類(lèi)沒(méi)有,則執(zhí)行父類(lèi)中的方法。
④ 如果想要在子類(lèi)重寫(xiě)的方法中調(diào)用父類(lèi)中的方法,那么應(yīng)該如何實(shí)現(xiàn)?
使用super關(guān)鍵字。
練習(xí)
1.回合制對(duì)戰(zhàn)游戲:奧特曼迪迦和小怪獸哥斯拉進(jìn)行PK,直到一方的血量為0時(shí)結(jié)束戰(zhàn)斗,輸出誰(shuí)勝利了!
如果奧特曼迪迦勝利,則奧特曼迪迦要和另一個(gè)奧特曼對(duì)象進(jìn)行PK,直到一方的血量為0時(shí)結(jié)束戰(zhàn)斗,輸出誰(shuí)勝利了!
如果小怪獸哥斯拉勝利,則小怪獸哥斯拉要和另一個(gè)小怪獸對(duì)象進(jìn)行PK,直到一方的血量為0時(shí)結(jié)束戰(zhàn)斗,輸出誰(shuí)勝利了!
要求是類(lèi)中只能有一個(gè)攻擊方法,方法中也只能有一個(gè)參數(shù)。
在這一節(jié)的練習(xí)中。我本來(lái)的想法是再創(chuàng)建一個(gè)奧特曼2類(lèi)和小怪獸2類(lèi),因?yàn)樽钕葘?xiě)的攻擊方法是分別給奧特曼和小怪獸的。比如小怪獸的攻擊方法只能是面向奧特曼的。如下所示
public void attack(OutMan om){
//被攻擊方HP減少2
om.HP=om.HP-2;
? System.out.println(name+"攻擊了奧特曼"+om.name+",對(duì)方的血量減少至"+om.HP);
?if(om.HP==0){//判斷奧特曼的血量是否為零
? System.out.println(name+"作為小怪獸已經(jīng)擊敗了奧特曼"+om.name);
}
}
而建立了怪獸2類(lèi)就可以使怪獸的攻擊能面向小怪獸了。
然而我這樣的想法是錯(cuò)的。因?yàn)楸砻嫔鲜沁_(dá)到了需求,實(shí)際上增加了類(lèi)。原有的奧特曼依然不能攻擊小怪獸類(lèi)。
代碼量也很冗長(zhǎng)復(fù)雜。因?yàn)樾枰匦聦?xiě)兩個(gè)類(lèi)和兩個(gè)新的攻擊方法。
最后明白,達(dá)到原題的目的,只需要建立一個(gè)大類(lèi)(Person),和對(duì)雙方通用的攻擊方法,讓奧特曼和小怪獸成為Person的子類(lèi),去繼承過(guò)來(lái),這樣就解決了。
public void attack(Person p){
//被攻擊方HP減少
p.HP--;
System.out.println(name+"攻擊了"+p.name+",對(duì)方的血量減少至"+p.HP);
if(p.HP==0){//判斷怪獸的血量是否為零
System.out.println(name+"已經(jīng)擊敗了"+p.name);
}
}
比如奧特曼對(duì)于Person的繼承:
package OutMan2;
public class OutMan extends Person{
}
非常的簡(jiǎn)潔和簡(jiǎn)練。這使我深刻體會(huì)到繼承的好處。