java对象转型体现可扩展性
public class TestAnimal { public static void main(String args[]) { TestAnimal t = new TestAnimal(); Animal a = new Animal("name"); Cat c = new Cat("catname","blue"); Dog d = new Dog("dogname","black"); t.f(a);t.f(c);t.f(d); } public void f(Animal a) { System.out.println("name: "+a.name); if(a instanceof Cat ) { Cat cat = (Cat)a; System.out.println(" "+cat.eyescolor+" eyes"); } else if(a instanceof Dog) { Dog dog = (Dog)a; System.out.println(" "+dog.furcolor+" fur"); } } } class Animal { public String name; Animal (String name) { this.name = name; } } class Cat extends Animal { public String eyescolor; Cat(String n,String c) { super(n); eyescolor = c; } } class Dog extends Animal { public String furcolor; Dog(String n,String c) { super(n); furcolor = c; } }