破东风一路向北
对象instanceof类名,用来判断对象是不是该类的对象,是则返回true,不是返回false。这个关键字比较常用的地方: 对象向下转型。首先,发生向下转型(子类 对象名 = (子类)父类对象)关系前必须发生向上转型(父类 对象名 = new 子类)。在一个父类有很多子类的情况下,如果要发生向下转型,就不知道要转向哪个子类,这时候就用 instanceof关键字来判断该对象到底是哪个子类的对象,然后再强制转型。见如下代码:class A{
public void print(){
System.out.println("A....");
}
}
class B extends A{
public void print(){
System.out.println("A....B");
}
public void print1(){
System.out.println("B....");
}
}
class C extends A{
public void print(){
System.out.println("A....C");
}
public void print1(){
System.out.println("C....");
}
}
public Test{
public static void main(String[] args){
A a1 = new B();//发生向上转型:(父类 对象名 = new 子类)
//向上转型的对象能调用父类的方法,但实际调用的是new后面的子类重写后的方法,但是不能调用子类独有的方法,比如这里B中的print1()方法,要调用B中的print1()方法,就要发生向下转型
a1.print();
//使用instanceof
if(a1 instanceof B){
B b1 = (B) a1;//向下转型
b1.print1();//调用B中的print1
}
if(a1 instanceof C){
C c1 = (B) a1;//向下转型
c1.print1();//调用C中的print1
}
}
}
运行结果是:
A....B
B....