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");
}
}