• Java知多少(32)instanceof


    多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 。 C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符。

    instanceof 运算符用来判断一个变量所引用的对象的实际类型,注意是它引用的对象的类型,不是变量的类型。请看下面的代码:

     1 public final class Demo{
     2     public static void main(String[] args) {
     3         // 引用 People 类的实例
     4         People obj = new People();
     5         if(obj instanceof Object){
     6             System.out.println("我是一个对象");
     7         }
     8         if(obj instanceof People){
     9             System.out.println("我是人类");
    10         }
    11         if(obj instanceof Teacher){
    12             System.out.println("我是一名教师");
    13         }
    14         if(obj instanceof President){
    15             System.out.println("我是校长");
    16         }
    17         System.out.println("-----------");  // 分界线
    18        
    19         // 引用 Teacher 类的实例
    20         obj = new Teacher();
    21         if(obj instanceof Object){
    22             System.out.println("我是一个对象");
    23         }
    24         if(obj instanceof People){
    25             System.out.println("我是人类");
    26         }
    27         if(obj instanceof Teacher){
    28             System.out.println("我是一名教师");
    29         }
    30         if(obj instanceof President){
    31             System.out.println("我是校长");
    32         }
    33     }
    34 }
    35 class People{ }
    36 class Teacher extends People{ }
    37 class President extends Teacher{ }

    运行结果:
    我是一个对象
    我是人类
    -----------
    我是一个对象
    我是人类
    我是一名教师

    可以看出,如果变量引用的是当前类或它的子类的实例,instanceof 返回 true,否则返回 false。

    系列文章:

    Java知多少(上)

    Java知多少(中)

  • 相关阅读:
    Prim+堆优化
    Tarjan缩点+建新图
    CF482A
    CF545C
    CF570B
    Python 入门2 list介绍
    Python 入门1 上传代码
    黑客与画家 第十三章
    黑客与画家 第十一章
    黑客与画家 第五章
  • 原文地址:https://www.cnblogs.com/Coda/p/4416166.html
Copyright © 2020-2023  润新知