多態(tài)存在的三個必要條件
- 繼承
- 重寫
- 父類引用子類對象
多態(tài)是指同一個接口具有不同的表現(xiàn)行為霉赡。使用多態(tài)的調(diào)用方法時,首先檢查父類中是否有該方法幔托,如果沒有編譯錯誤穴亏,如果有調(diào)用子類的同名方法。
class Fu {
public int age = 40;
static {
System.out.println("initial block fu");
}
public Fu(){
System.out.println("hello fu");
}
public void show(){
System.out.println("show Fu");
}
}
class Zi extends Fu{
public int age = 20;
static {
System.out.println("initial block Zi");
}
public Zi(){
System.out.println("hello zi");
}
public void show(){
System.out.println("show Zi");
}
public void method(){
System.out.println("method here");
}
}
public class testDemo {
public static void main(String[] args){
Fu demo = new Zi();
System.out.println(demo.age);
demo.show();
}
}
輸出為:
initial block fu
initial block Zi
hello fu
hello zi
40
show Zi
上面除了多態(tài)需要理解重挑,還要注意的是父類中的屬性當用父類去調(diào)用時不會被重寫嗓化。初始代碼塊的問題,如果沒有static是一個對象初始化谬哀,和構(gòu)造方法一起初始化蟆湖,但是上面是先執(zhí)行的父和子的初始代碼塊,然后執(zhí)行父和子的構(gòu)造方法玻粪,因為先初始化類,然后初始化對象诬垂。