instanceof是Java的一个保留关键字,左边是对象(对象是看右,与new后面的一致),右边是类,返回类型是boolean类型。它的具体作用是测试左边的对象是否是右边类或者该类的子类创建的实例对象,是,则返回true,否则返回false。
instance不用与基本类型。
用法
正常创建对象
Object>Person>Teacher和Student
编译运行两个步骤
编译决定程序是否可以执行
运行决定程序输出的结果
编译过程
看a,编译看左边
Person和String没有父子关系,所以不能运行(有同一个父亲是可以通过的)
编译步骤就到这
看运行
运行看右边a和student都是Student
左instanceof右
左边是右边的儿子或者是自己 返回true
否则返回false
instance判断是否可以强制转换
强制转换
1.向下转换
Person中的方法
和Student的方法
定义Preson a=new Student();
a可以调用Person中的方法
但是不可以调用Student的方法
这时可以通过强制转换来调用子类的方法
((Student)a).work;//a由原来的Person变为Student此之谓,向下转换
2.向上转换
Student student = new Student();
Person a=student;
a.work;//报错,因为person中没有work,向上转型,丢失了一些子类的方法
子类转换为父类会丢失自己本来的一些方法
作用
减少重复的代码
把一个类向下转型可以调用下面的代码
把一个类向上转型可以调用转型类的非重写方法(本类可能将该方法进行了重写)