java对象转型
TestCasting.java
//对象转型——实例1 class Animal { public String name;//名字 Animal(String name) { this.name = name; } } class Cat extends Animal { public String eyeColor;//眼睛的颜色 Cat(String name, String eyeColor) { super(name); this.eyeColor = eyeColor; } } class Dog extends Animal{ public String furColor;//毛的颜色 Dog(String name, String furColor) { super(name); this.furColor = furColor; } } public class TestCasting { public static void main(String[] args) { Animal a = new Animal("name"); Cat c = new Cat("CatName","bule"); Dog d = new Dog("DogName","black"); //instanceof用来判断内存中实际对象A是不是B类型 System.out.println(a instanceof Animal);//a是Ainmal吗?true System.out.println(c instanceof Animal);//true System.out.println(d instanceof Animal);//true System.out.println(a instanceof Cat);//a是Cat吗?false a = new Dog("大黄","黄色"); System.out.println(a.name);//大黄 //System.out.println(a.furColor);//error System.out.println(a instanceof Animal);//a是Ainmal吗?true System.out.println(a instanceof Dog);//a是Dog吗?true Dog d1 = (Dog)a;//要加强制转换符 System.out.println(d.furColor);//black /***************************************************************/ TestCasting test = new TestCasting(); test.f(a); //name: 大黄 黄色 fur test.f(c); //name: CatName bule eyes test.f(d); //name: DogName black fur } //面向对象,可扩展性好 public void f(Animal a) { System.out.print(" name: " + a.name); if(a instanceof Cat) { Cat cat = (Cat)a; System.out.println(" " + cat.eyeColor + " eyes"); } else if(a instanceof Dog){ Dog dog = (Dog)a; System.out.println(" " + dog.furColor + " fur"); } } }