/* * 多態 * 一、多態是方法的多態,屬性沒有多態 * 二、寫程序的時候,想要調用運行時類型的方法,只能進行強制轉換,不然沒法經過編譯器的檢查 * 三、兩個沒有關聯的類進行轉換,會報「ClassCastException」 * 四、多態存在的三個必要條件:繼承、方法重寫、父類應用指向子類對象 */ package py.sxt.com; public class OOP_4_22_04_duotai { public static void main(String[] args) { //向上自動轉型 Animal ani = new Dog(); //屬性調用的時候,任然是父類的屬性,屬性沒有多態 System.out.println(ani.age); //運行時看對象,即父類引用指向子類對象 animalCry(ani); //要調用對象的屬性,就須要進行強制類型轉化 Dog dog = (Dog) ani; System.out.println(dog.age); System.out.println(dog instanceof Animal); System.out.println(ani instanceof Cat); System.out.println(ani instanceof Dog); } static void animalCry(Animal a) { a.shout(); } } class Animal { int age = 10; public void shout () { System.out.println("叫了一聲。。"); } } class Dog extends Animal { int age = 28; @Override public void shout() { // TODO Auto-generated method stub System.out.println("汪汪汪。。。"); } public void gnawBone () { System.out.println("我在肯肉骨頭。。"); } } class Cat extends Animal { int age = 18; @Override public void shout () { System.out.println("喵喵喵喵!"); } }