前言:
最近我正在系统性地过一遍Java的基础,在学习过程中,发现instanceof关键字有些地方不是很清晰,想要探究一些特殊情况下他的返回值,比如说在多态的条件下,这个关键字是如何判定的。接下来就对instanceof这个关键字进行讲解,以及实例演示。
正文:
首先来讲讲instanceof这个关键字的作用:
instanceof,它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现。
在Java中instanceof在判断时会有两种状态,一种是在编译状态下报错,另一种就是在运行状态下返回true 和 false。
那么什么时候会在编译的时候就报错呢,和返回false的区别在哪?
- 在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。
- 在运行状态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下返回的结果为true,最后一种为false。但是class为子类时编译不会报错,也就是有关系的情况下,不会报错。
不过这篇文章更多的是探讨多态的情况下,instanceof该怎么判断?
先上代码:
public class InstanceTest1 {
public static void main(String[] args) {
Person p1 = new Student();
Pe