Javaには「アドレスべったりな」ポインタはないが、Pascalにあるような
意味でのポインタ(参照という。C++の参照とは意味が若干違う)はある。
というかObjectは全部参照だ。

IAnimal[] animals = new IAnimal[2];
amimals[0] = new Dog();
aminals[1] = new Cat();
でOK。