1转砖、繼承關(guān)系
基于某個(gè)父類對(duì)對(duì)象的定義加以新的拓展,而產(chǎn)生新的子類定義鲸伴,子類可以繼承父類原來(lái)的某些
定義府蔗,也可以增加父類沒(méi)有的定義,或者顛覆父類的某些特性汞窗;
在java中姓赤,存在多個(gè)類時(shí),使用:“extends”關(guān)鍵字來(lái)表示子類與父類的關(guān)系仲吏;
語(yǔ)法格式:在定義子類是定義繼承自哪個(gè)父類
????????public class 子類名 extends 父類名(){
????????//自己特有的狀態(tài)的行為
????????}
在Java中不铆,只允許單繼承,不允許多繼承裹唆;只能有一個(gè)直接的父類杀捻;但是可以有多重繼承啤月;
在Java中夜惭,除了object類之外莹妒,每一個(gè)類都有直接父類;object要么是一個(gè)類的直接父類舞吭,要么
是一個(gè)類的間接父類泡垃;
繼承關(guān)系的作用:
????????1):解決代碼的重復(fù)問(wèn)題
????????2):真正的作用:表示出一個(gè)體系
繼承的條件:
????????1):父類中的成員使用public修飾的;子類繼承羡鸥;
????????2):父類中的成員使用protected修飾的蔑穴,即使不在同一個(gè)包中,也會(huì)繼承惧浴;
????????3):如故父類子類在同一個(gè)包中存和,此時(shí)子類可以繼承父類中缺省修飾符修飾的成員;
????????4):如果父類成員使用private修飾衷旅,子類無(wú)法繼承捐腿;
????????5):父類的構(gòu)造器,子類無(wú)法繼承柿顶;
方法的覆蓋:
????????當(dāng)子類繼承到父類的方法不需要時(shí)茄袖,可以在子類中定義一個(gè)與父類方法名相同的方法,覆蓋
????????掉父類的方法嘁锯;
遵循的原則:
????????1):方法的簽名相同(方法簽名 = 方法名 + 方法的參數(shù)列表)
????????2):子類方法的返回類型和父類方法的返回類型相同或者是其子類(即更詳細(xì)的類型)宪祥;
????????3):子類方法聲明拋出的異常要和父類相同或者是其子類聂薪;
????????4):子類方法的訪問(wèn)權(quán)限必須必父類更大或者相同;(privite修飾的方法不能繼承也就不存在覆蓋)
????????在子類覆蓋方法前面加上 @override? 可以檢查其下一個(gè)方法是否是覆蓋方法蝗羊,不是則會(huì)報(bào)錯(cuò)藏澳;
2、方法重載與方法覆蓋的區(qū)別
????????方法重載:Ovelode
????????方法覆蓋:Override
????????名字很像耀找,沒(méi)有關(guān)系翔悠;
????????方法重載:解決了同一個(gè)類中,方法作用相同名稱不同的問(wèn)題涯呻;(兩同一不同:在同一個(gè)類中方
????????法名相同凉驻,傳參列表不同)
????????方法覆蓋:解決子類繼承父類之后,可能父類中的某個(gè)方法不符合子類中的某個(gè)特征复罐,此時(shí)子類
????????需要在子類中重新定義該方法,重寫方法體雄家;(一同兩小一大:方法簽名相同效诅;返回類型和拋出
????????的異常相同或者更詳細(xì);訪問(wèn)權(quán)限相同或更大)
3趟济、super關(guān)鍵字
????????在子類的某一個(gè)方法中乱投,調(diào)用被覆蓋的父類方法;
????????super:當(dāng)前對(duì)象的父類對(duì)象顷编;
????????this:當(dāng)前對(duì)象戚炫,誰(shuí)調(diào)用this,this就是哪一個(gè)對(duì)象媳纬;