通过数组元素访问方法的时候只能访问在 Animal中定义的方法,对
于 Tiger类和 Fish中定义的方法时却不能调用,例如语句 animal[2].swim();就是不正确的。当
需要访问这些方法时需要用到类型转换,演示程序如下。
1 public class DynamicMethodDemo2{ 2 public static void main(String args[ ]){ 3 Animal [ ]animal=new Animal[3]; 4 animal[0]=new Animal(); 5 animal[1]=new Tiger(); 6 animal[2]=new Fish(); 7 DynamicMethodDemo2 dm=new DynamicMethodDemo2(); 8 dm.move(animal[0]); 9 dm.move(animal[1]); 10 dm.move(animal[2]); 11 } 12 void move(Animal animal){ 13 //进行对象类型的判断 14 if(animal instanceof Tiger) 15 ((Tiger)animal).tigerRun(); 16 else if(animal instanceof Fish) 17 ((Fish)animal).swim(); 18 else animal.sleep(); 19 } 20 }
主要看 move方法,move方法首先判断 animal对象是哪个类的对象,由判断执行不同的
方法。在判断过程使用了 instanceof运算符,它是用来判断对象类型的一个运算符。当判断
出它的类型之后,再对其进行类型转换,得到原始类型后就可以调用它的类所特有的方法了。
时间: 2024-10-13 12:41:19