繼承:extends
語(yǔ)法:子類的名字 extends 父類的名字
父類:
public class Uncle {
? ? private String name;
? ? private int age;
? ? public void fahongbao(){
? ? ? ? System.out.println("舅舅發(fā)紅包");
? ? }
}
子類一:
public class UncleOne extends Uncle{
? ? public void chouyan(){
? ? ? ? System.out.println("大舅喜歡抽煙");
? ? }
? ? public void fahongbao(){
? ? ? ? System.out.println("大舅家道中落,發(fā)不起紅包了,該送祝福了");
? ? }
}
子類二:
public class UncleTwo extends Uncle{
? ? public void hejiu(){
? ? ? ? System.out.println("二舅喜歡喝酒");
? ? }
? ? //方法的重寫? 復(fù)寫? 覆寫
? ? public void fahongbao(){
? ? ? ? System.out.println("二舅不僅發(fā)紅包還送茅臺(tái)");
? ? }
}
1.子類能夠繼承到父類所有的不是的私有的屬性和方法
2.子類能夠復(fù)寫父類的方法,如果沒(méi)有復(fù)寫,調(diào)用的是父類的方法,子類一旦復(fù)寫,優(yōu)先調(diào)用復(fù)寫后的方法
3.除了復(fù)寫,子類可以擴(kuò)充父類沒(méi)有的方法
優(yōu)點(diǎn):
1.實(shí)現(xiàn)代碼的復(fù)用
2.有利于子類代碼的擴(kuò)展
多重繼承 不允許 語(yǔ)法錯(cuò)誤
public class Temp extends UncleOne,UncleTwo{
}
多層繼承:
public class Uncle {
? ? private String name;
? ? private int age;
? ? public void fahongbao(){
? ? ? ? System.out.println("舅舅發(fā)紅包");
? ? }
}
public class UncleOne extends Uncle{
? ? public void chouyan(){
? ? ? ? System.out.println("大舅喜歡抽煙");
? ? }
? ? public void fahongbao(){
? ? ? ? System.out.println("大舅家道中落,發(fā)不起紅包了,該送祝福了");
? ? }
}
public class UncleUneSon extends UncleOne{
? ? public void fahongbao(){
? ? ? ? System.out.println("大舅的兒子厲害了,接著發(fā)紅包");
? ? }
}
類繼承的加載順序
先加載父類在加載子類
祖先類的構(gòu)造方法最先執(zhí)行,祖先類最先被創(chuàng)建出來(lái),其次是父類,最后是子類
在構(gòu)造方法當(dāng)中會(huì)隱性的調(diào)用super()超類? 父類的無(wú)參構(gòu)造方法
final? 最終的最后的
被final修飾的成員不可以被改寫
1.final修飾的變量值不能發(fā)生修改PI=3.1415
修飾基本類型數(shù)據(jù),其值不能發(fā)生改變;修改引用數(shù)據(jù)類型,例如數(shù)組,數(shù)組中的值可以發(fā)生修改,但是數(shù)組名不能指向新的空間
2.final修飾的方法不能被重寫
3.final修飾的類不能被繼承