1、通過將父類的引用指向了子類的對象,提高程序的擴展性。
2、通過傳遞子類對象的方式去父類中查找是否存在子類對象調用的方法,如果父類中存在子類對象調用的方法,同時子類對象中存在通方法覆蓋,將執行子類中的覆蓋方法,如果子類中沒有覆蓋方法,將執行父類中提供的方法。
3、將父類引用強制轉型,通過將父類引用強制轉型的方式,得到轉型後的引用,將可以調用當前類的方法。、
注意:
1、千萬不要把父類對象轉換成子類類型,我們能轉換的是父類應用指向了自己的子類對象,該應用可以被提升,可以被強制轉換。
2、多態自始至終都是子類對象坐着變化。
代碼塊:
class Animal{
public void eat(){
System.out.println("eat animal");
}
}
class Cat extends Animal{
// public void eat(){
// System.out.println("eat Cat");
// }
public void CatMouse(){
System.out.println("Cat CatMouse");
}
}
public class Test9 {
public static void main(String[] args) {
Animal a = new Cat();
a.eat();
Cat c = (Cat)a;
c.CatMouse();
}
}