繼承
子類繼承父類的功能 extends 父類的名稱
舉例:人 ==》 男人 女人 打工人 ==》 經(jīng)理 老板
父類 舅舅
public class Uncle {
private String name;
private int age;
// getter setter
public void setName (String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
// 發(fā)紅包
public void sendHongbao() {
System.out.println("舅舅在發(fā)紅包");
}
}
子類:大舅
public class UncleOne extends Uncle{
public void chouyan(){
System.out.println("大舅喜歡抽煙");
}
}
子類:二舅
public class UncleTwo extends Uncle{
public void drinkWine() {
System.out.println("二舅喜歡喝酒");
}
}
子類只能繼承自一個父類,不能繼承多個父類 多重繼承(不允許)
// 錯誤代碼
public class UncleThree extends Uncle , UncleOne{
}
子類 多層繼承
// 多層繼承
public class UncleOneSon extends UncleOne{
}
在繼承中類加載的順序
先創(chuàng)建父類,再創(chuàng)建子類
父類的構(gòu)造方法先于子類的構(gòu)造方法調(diào)用
public UncleOne() {
super(); // 調(diào)用父類的構(gòu)造方法
System.out.println("子類大舅的構(gòu)造方法被創(chuàng)建了");
}
方法的復(fù)寫(覆寫)override
@Override
public void sendHongbao() {
System.out.println("大舅家道中落,紅包只有1毛錢");
}
如果子類沒有復(fù)寫父類的方法,調(diào)用的是父類的
如果復(fù)寫了父類的方法,在調(diào)用時優(yōu)先調(diào)用子類復(fù)寫后的方法
要求
1 方法的簽名完全一致
2 方法體不同
Final
1 修飾的內(nèi)容不可以發(fā)生改變
1.1 修飾的是基本數(shù)據(jù)類型,其值不可以發(fā)生改變
1.2 修飾的是引用數(shù)據(jù)類型,引用的地址不能發(fā)生改變(不能指向新的空間),但是原本引用的空間中的值是可以發(fā)生修改的