/* * 多态 * 一、多态是方法的多态,属性没有多态 * 二、写程序的时候,想要调用运行时类型的方法,只能进行强制转换,不然没法经过编译器的检查 * 三、两个没有关联的类进行转换,会报“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("喵喵喵喵!"); } }