多態
多態是java的一種特性。
那多態的直接寫法寫法是什麼呢?
父類指向子類
public class Fu{
int a = 10;
public void methodA(){};
};
public class Zi extends Fu{
int a = 20;
public void method(){};
public void methodA(){};
};
//多態的一種體現
Fu obj = new Zi();
幾個注意:
1. 訪問成員變量是,看等號左邊是誰則用誰,沒有則向上找
上例:輸出obj.a ,結果爲10
2. 訪問方法則看實現對象是誰用誰,沒有則向上找
3. 編譯看左邊(父類),運行看右邊(子類)
例:直接obj.method() 會報錯,則不能進行編譯運行
因爲編譯的時候要看左邊及父類有沒有該方法
當然上面的例子可以強制聲明爲成子類 ((Zi) obj).method();
obj,methodA();則不會有問題,運行的時候要看右邊,所以運行的時候運行子類方法
instanceof
判斷一個對象能不能當作後面一個類的對象
也就是用來識別對象
例:
//動物父類
public class Animal(){}
//對象貓
public class Cat extends Animal(){}
//對象狗
public class Dog extends Animal(){}
//instanceof使用
Animal animal = new cat();
if(animal instanceof Cat){
//執行cat
}
if(animal instanceof Dog){
//執行Dog
}
//它一般是用來:當不知道animal是什麼對象的時候,又或者他可能是一個經過處理返回的對象類型時
//同時他們繼承同一個父類,擁有相同的方法,所以需要判斷鑑別類是實現大哥子類對象