zoukankan      html  css  js  c++  java
  • Java中instanceof关键字的理解

    【转】原文地址:https://www.cnblogs.com/zjxynq/p/5882756.html

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

    用法: 
    result = object instanceof class 
    参数: 
    Result:布尔类型。 
    Object:必选项。任意对象表达式。 
    Class:必选项。任意已定义的对象类。 
    说明: 
    如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

    但是instanceof在Java的编译状态和运行状态是有区别的:

    在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。

    在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。

    例子:

    接口Person

    interface Person2{
        public void eat();
    }

    实现类People

    class People implements Person2{
        private int a = 0;
        @Override
        public void eat(){
            System.out.println("==========" + a);
        }
    }

    子类xiaoming:

    class Xiaoming extends People{
        private String name;
        @Override
        public void eat(){
            System.out.println("++++++++++++");
        }
    }

    主函数

    
    
    public class TestDemo{
    public static void main(String[] args) {
    People p = new People();
    Xiaoming x = new Xiaoming();
    System.out.println(p instanceof Person2);
    System.out.println(p instanceof Xiaoming); -- 2
    System.out.println(x instanceof Person2);
    System.out.println(x instanceof People);
    }
    }
     

    注意:上面2处的代码在编译时不会报错。

    运行结果:

    true
    false
    true
    true

    关系图:

  • 相关阅读:
    python3 TypeError: a bytes-like object is required, not 'str'
    Centos 安装Python Scrapy PhantomJS
    Linux alias
    Vim vimrc配置
    Windows下 Python Selenium PhantomJS 抓取网页并截图
    Linux sort
    Linux RSync 搭建
    SSH隧道 访问内网机
    笔记《鸟哥的Linux私房菜》7 Linux档案与目录管理
    Tornado 错误 "Global name 'memoryview' is not defined"
  • 原文地址:https://www.cnblogs.com/yrxns/p/9355058.html
Copyright © 2011-2022 走看看