package Java容器.JavaCollection;
import jdk.nashorn.internal.runtime.arrays.IteratorAction;
import oop.A;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class fan_xing {
public static void main(String[] args) {
//
// List<Animal> list = new ArrayList<Animal>();//JDK8之前
// JDK8之后ArrayList<这里会自动推断类型>
//多态定义一个Animal类型的ArrayList
List<Animal> list = new ArrayList<>();
Cat cat = new Cat();
Bird bird = new Bird();
list.add(cat);
list.add(bird);
Iterator<Animal> iterator = list.iterator();//定义一个迭代器,类型为AnimalL类型
while (iterator.hasNext()){
Animal a= iterator.next();
if(a instanceof Cat){//向下转型
Cat c = (Cat)a;
c.catchMouse();
}else{
Bird b = (Bird)a;
b.fly();
}
}
}
}
class Animal{
public void move(){
System.out.println("动物在移动!");
}
}
class Cat extends Animal{
public void catchMouse(){
System.out.println("猫抓老鼠");
}
}
class Bird extends Animal{
public void fly(){
System.out.println("鸟儿在飞翔!");
}
}
运行结果:
猫抓老鼠
鸟儿在飞翔!