Polymorphysim

    技术2022-05-14  14

    public class Polymorphysim{ public static void main(String[] args){ Animal dog = new Dog(); Cat cat = (Dog)dog; } } class Animal{ public void sing(){ System.out.println("Animal is singing"); } } class Dog extends Animal{ public void sing(){ System.out.println("Dog is singing"); } } class Cat extends Animal{ public void sing(){ System.out.println("Cat is singing"); } } 先看第一段代码:

     

    关于多态,总的来说就是父类的引用可以指向子类的对象; 以上程序输出为child iss singing ;

    (1)若将子类Child类的sing()方法注释掉,则输出结果为:parent is singing;

    (2) 若将父类parent类sing()方法注释掉,则  D:/java_pro_jdk>javac Polymorphysim.javPolymorphysim.java:4: 找不到符号符号: 方法 sing()位置: 类 Parent                parent.sing();                      ^1 错误

     

     

    再看一段程序:

    public class Polymorphysim{ public static void main(String[] args){ Animal dog = new Dog(); Cat cat = (Dog)dog; } } class Animal{ public void sing(){ System.out.println("Animal is singing"); } } class Dog extends Animal{ public void sing(){ System.out.println("Dog is singing"); } } class Cat extends Animal{ public void sing(){ System.out.println("Cat is singing"); } }

     

    这段代码是关于强制类型转换的,编译结果为:

    D:/java_pro_jdk>javac Polymorphysim.javaPolymorphysim.java:4: 不兼容的类型找到: Dog需要: Cat                Cat cat = (Dog)dog;                          ^

    可以解释为:必须转换为实际所指向的类型的对象,即实际new的是什么对象,就转换成什么对象;

    指向谁就调用谁的方法;


    最新回复(0)