inttanceof关键字用来判断一个引用指向的对象是不是某种类型,具体代码块如下:
package com.javaeasy.logcar;
import com.javaeasy.car.CarBase; //这个类就不写出来了
import com.javaeasy.othertransport.Bike; //这个类就不写出来了
public class TransportRecoder {
public static int counter = 0; //静态变量,用于保存经过的交通工具数
public static void recordTransport(Object transportObj) { //静态方法,用于处理一辆经过的交通工具。Object类是万类之祖,其引用可以指向任何类
if (transportObj == null) {
return;
} else {
counter++;
TransportStatus status = null; //TransportStatus类的引用
if (transportObj instanceof CarBase) { //判断transportObj指向的是不是Carbase类的对象
CarBase car = (CarBase) transportObj; //前面学习过通过一个引用可以调用什么方法,是由引用的类型决定的。所以在确定Object引用指向Carbase类的 //对象后,首先创建一个Carbase类的引用,然后将Object类的引用强制类型转换后,给这个新创建的引用赋值。
status = car.getCarStatus();
} else if (transportObj instanceof Bike) { //否则就判断是不是Bike类的对象
Bike bike = (Bike) transportObj; //是则强制类型转换
status = bike.getBikeStatus();
}
System.out.println("以下是经过的第" + counter + "辆车的信息:");
System.out.println("车为:" + status.getName() + ",车速为:"
+ status.getSpeed());
}
}
}
前面学习过通过一个引用可以调用什么方法,是由引用的类型决定的。所以在确定Object引用指向Carbase类的对象后,首先创建一个Carbase类的引用,然后将Object类的引用强制类型转换后,给这个新创建的引用赋值。