关于instanceof判断的条件

来源:10-2 多态中的引用类型转换

qwertyuioplkjh

2017-10-08 16:04

视频中说如果左面的对象包含右面的类的元素就返回True,这句话不是很理解啊,有没有人能说清楚一点

写回答 关注

3回答

  • kk求知者
    2018-02-27 21:08:21

    左边的引用是否 是右边的类型 或者说是 子类

  • 倩与倩寻
    2017-11-07 20:21:46

    instanceof是 判断 左侧对象是不是右侧类的实例

  • _Naturalent
    2017-10-08 17:00:12

    引用原文地址:http://blog.csdn.net/cntanghai/article/details/6096976

    package myPackage;    
    /**  
    * instanceof运算符用法  
    * 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当  
    * 左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false  
    *   
    * 说明:(1)一个类的实例包括本身的实例,以及所有直接或间接子类的实例  
    * (2)instanceof左边操作元显式声明的类型与右边操作元必须是同种类或右边是左边父类的继承关系,  
    * (3)不同的继承关系下,编译出错  
    */    
    class Person {    
    }    
    class Student extends Person {    
    }    
    class Postgraduate extends Student {    
    }    
    class Animal {    
    }    
    public class Ex_instanceOf {    
    public static void main(String[] args) {    
       instanceofTest(new Student());    
    }    
    /**  
    * 这个程序的输出结果是:p是类Student的实例  
    *   
    * Person类所在的继承树是:Object<--Person<--Student<--Postgraduate。  
    *   
    * 这个例子中还加入一个Animal类,它不是在Person类的继承树中,所以不能作为instanceof的右操作数。  
    *   
    * @param p  
    */    
    public static void instanceofTest(Person p) {    
       // p 和 Animal类型不一样,彼此之间没有继承关系,编译会出错    
       // 提示错误:Incompatible conditional operand types Person and Animal    
       // if(p instanceof Animal){    
       // System.out.println("p是类Animal的实例");    
       // }    
       //下面代码的除了第一行都会输出    
       if (p instanceof Postgraduate) System.out.println("p是类Postgraduate的实例");    
       if (p instanceof Person) System.out.println("p是类Person的实例");    
       if (p instanceof Student) System.out.println("p是类Student的实例");    
       if (p instanceof Object) System.out.println("p是类Object的实例");    
       
    }    
    }


Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530559 学习 · 6091 问题

查看课程

相似问题