3 回答
已采纳
破东风一路向北
TA贡献8条经验 获得超5个赞
对象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....
添加回答
举报
0/150
提交
取消