Java基础-多态数组

package com.hspedu.polyarray_;

import org.junit.Test;

public class TestPolyArray {
    /**
     * 多态数组
     */
    @Test
    public void testPolyArray() {
        Animal[] animals = new Animal[3];
        animals[0] = new Cat("小白猫", 2);
        animals[1] = new Cat("小花猫", 3);
        animals[2] = new Dog("小黑狗", 5);

        // 调用父类的通用方法
        for (Animal animal : animals) {
            animal.showInfo();
        }

        // 调用子类的独有的方法
        for (Animal animal : animals) {
            if (animal instanceof Cat) {
//                Cat cat = (Cat) animal;
//                cat.jump();
                ((Cat) animal).jump();
            }
            if (animal instanceof Dog) {
                ((Dog) animal).run();
            }
        }
    }
}

class Animal {
    private String name;
    private int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void showInfo() {
        System.out.println("info: " + name + ", " + age);
    }
}

class Cat extends Animal {
    private String name;
    private int age;

    public Cat(String name, int age) {
        super(name, age);
        this.name = name;
        this.age = age;
    }

    public void jump() {
        System.out.println(name + " jump");
    }
}

class Dog extends Animal {
    private String name;
    private int age;

    public Dog(String name, int age) {
        super(name, age);
        this.name = name;
        this.age = age;
    }

    public void run() {
        System.out.println(name + " run");
    }
}

 

posted @ 2022-05-09 17:11  柯南同学  阅读(54)  评论(0编辑  收藏  举报