Java知识点:instanceof关键字

介绍

  • 格式:a instanceof B,其中a是一个variable(设a所指向的对象的类型命名为A,即A是一个type。
  • 功能:判断A是否 is-a B。
  • 当a=null时,始终返回false。
  • 当B=Object时,始终返回true。

可能返回的结果

  • true:A is-a B。
  • false:
    • B是一个类时,A和B在一棵继承树,但是A is-not-a B。
    • B是一个接口时,A不是final的,A is-not-a B(不要求A和B要在一棵继承树上)。
  • Compile Error
    •  B是一个类时,A和B不在一棵继承树上,则Compile Error。
    •  B是一个接口时,如果A是final的且A和B不在一棵继承树上,则Compile Error。

实验一:接口的情况

 1 interface A{}

 2 class B implements A{}

 3 class C{}

 4 final class D{}

 5 class Demo01

 6 {

 7     public static void main(String args[])

 8     {

 9         B b = new B();

10         C c = new C();

11         D d = new D();

12         System.out.println(b instanceof A);    //true

13         System.out.println(c instanceof A);    //false

14         System.out.println(d instanceof A);    //Compile Error:不可转换的类型

15     }

16 }

实验二:类的情况

 1 public class Instanceof01

 2 {

 3     public static void main(String[] args) {

 4         A a = new A();

 5         A b = new B();

 6         System.out.println((a instanceof B));    // A isn't-a B,因此输出false

 7         System.out.println((b instanceof A));    // B is-a A,因此输出true

 8         System.out.println((b instanceof B));    // B is-a B,因此输出true

 9         System.out.println((a instanceof C));    // Compile Error:不可转换的类型,因为类A和类C不在一棵继承树上

10     }

11 }

12 class A{}

13 class B extends A{}

14 class C{}

 

你可能感兴趣的:(instanceof)