instanceof关键字
instanceof用于判断某个对象是否是某个类的实例. 例如: a instanceof B 若a是B的实例,则返回true,否则返回的是false.
instanceof的使用:
例如下例,一般情况下, 都是在转型之前使用instanceof进行一下判断,这样可以进行比较安全的类型转换.
class A
{
public void fun1()
{
System.out.println("A --> public void fun1()") ;
}
public void fun2()
{
// fun2方法调用的是fun1方法
this.fun1() ;
}
}
class B extends A
{
// 覆写A类中的fun1()方法
public void fun1()
{
System.out.println("B --> public void fun1()") ;
}
public void fun3()
{
System.out.println("B --> public void fun3()");
}
}
class C extends A
{
// 覆写A类中的fun1()方法
public void fun1()
{
System.out.println("C --> public void fun1()") ;
}
public void fun5(){
System.out.println("C --> public void fun5()");
}
}
public class Demo03{
public static void main(String args[])
{
fun(new C()) ;
}
/* 如果传入的是B类的对象,则要求再调用fun3()方法;
如果传入的是C类的对象,则要求再调用fun5()方法。
这样,通过instanceof,实现了判别某个对象到底是谁的实例 */
public static void fun(A a)
{
a.fun2() ;
//如果a是B的实例化对象,则调用fun3()
if(a instanceof B)
{
B b = (B)a;
b.fun3() ;
}
//如果a是B的实例化对象,则调用fun5()
if(a instanceof C)
{
C c = (C)a ;
c.fun5() ;
}
}
}
|