1.instanceof功能:判断前面的对象是否属于后面的类,或者属于其子类; 如果是,返回 true ,不是返回 false;
2.instanceof概念是在多态中提出的
3.注意事项:
使用 instanceof 时需要保证:
instanceof 前面的引用变量编译时的类型要么与后面的类型相同,要么与后面的类型具有父子继承关系,否则就会出现编译出错。
4,代码案例:
java
//Student类
package demo07;
public class Student extends Person{
public void go(){
}
}
//Person类
package demo07;
public class Person {
public void run(){
System.out.println("run");
}
}
//输出
import demo07.Person;
import demo07.Teacher;
import demo07.Student;
public class Application {
public static void main(String[] args) {
//System.out.println(X instanceof Y );能不能编译通过!
//object>String
//object>Person>Teacher
//object>Person>Student
Object object =new Student();
System.out.println(object instanceof Student);//true
System.out.println(object instanceof Person);//true
System.out.println(object instanceof Object);//true
System.out.println(object instanceof Teacher);//False
System.out.println(object instanceof String);//False
System.out.println("========================");
Person person = new Student();
System.out.println(person instanceof Student);//true
System.out.println(person instanceof Person);//true
System.out.println(person instanceof Teacher);//False
//System.out.println(person instanceof String);// 编译报错
System.out.println("==================");
Student student = new Student();
System.out.println(student instanceof Student);//true
System.out.println(student instanceof Person);//true
System.out.println(student instanceof Object);//true
//System.out.println(student instanceof Teacher);//编译报错
//System.out.println(student instanceof String);//编译报错
System.out.println("==================");
//类型之间的转换 父 子
Person student1 = new Student();
//student1.go();
//将student这个对象转换成Student这个类型,然后就可以使用Student类型的方法了
Student student11 = (Student) student1;//快捷键,(Student,要转换的类型)student,需要转换的对象 然后Alt+回车
student11.go();
Student student2 = new Student();
//子类转换为父类,可能会丢失一些自己本来的方法
student2.go();
Person person1 =student2;
//person1.go();
}
}