语法: 对象 instanceof 类;
含义:如果这个对象时这个类或者这个类的子类的实例化,那么结果及时ture, 否则 false。
常常用来判断一个类是否是某个类的子类,以此判断A类是否继承或者间接继承B类。
实例1:
一、对象A是类B的子类的实例化对象
package equalsTest; public class Test00
{
public static void main(String[] args)
{
Father f = new Father();
User1 u1 = new User1();
User2 u2 = new User2(); //u1对象是Father类的子类的实例化,所以返回ture
if(u1 instanceof Father)
{
System.out.println("ture");
}
else System.out.println("flase");
}
} //父类
class Father {} //子类1
class User1 extends Father {} //子类2
class User2 extends Father {}
此时返回的结果就是ture;u1对象是不是Father类的实例化,但是是Father子类的实例化,所以是ture
二、如果是下面这种情况:
如果返过来,父类的对象 instanceof 子类
if(f instanceof User1)
{
System.out.println("ture");
}
else System.out.println("flase");
结果是false; 此时f不是User1类的实例化对象,同时也是不是User1子类的实例化对象,所以false。
三、两个类有间接继承关系
package equalsTest; public class Test00
{
public static void main(String[] args)
{ Father f = new Father();
User1 u1 = new User1();
User2 u2 = new User2(); //u1对象是Father类的子类的实例化,所以返回ture
if(u2 instanceof Father)
{
System.out.println("ture");
}
else System.out.println("flase");
}
} //父类
class Father {} //子类1
class User1 extends Father {} //子类2间接继承Father
class User2 extends User1 {}
此时结果是:ture; 所以如果对象时这个类的实例化,或者子类的实例化,或者子类的子类的实例化。
所以任何对象 instanceof Object都是ture