instanceof关键字
判读两个类是否存在父子关系
System.out.println(X instanceof Y); 看 X 和 Y是否有继承关系
import demo.demo2.Person;
import demo.demo2.Student;
import demo.demo2.Teacher;
public class Application {
public static void main(String[] args) {
//object ->Person ->Teacher
//object ->Person ->Student
//System.out.println(X instanceof Y); 看 X 和 Y是否有继承关系
Object object = new Student();
System.out.println(object instanceof Student);
System.out.println(object instanceof Teacher);
System.out.println(object instanceof Person); //继承之后为true 否则为false
System.out.println(object instanceof Object);
System.out.println(object instanceof String);
System.out.println("----------------------------");
Student obj = new Student();
System.out.println(obj instanceof Student);
// System.out.println(obj instanceof Teacher); //编译不通过
System.out.println(obj instanceof Person); //继承之后为true 否则为false
System.out.println(obj instanceof Object);
// System.out.println(obj instanceof String); //编译不通过
System.out.println("----------------------------");
Person person = new Student();
System.out.println(person instanceof Student);
System.out.println(person instanceof Teacher);
System.out.println(person instanceof Person); //继承之后为true 否则为false
System.out.println(person instanceof Object);
// System.out.println(person instanceof String); //编译不通过
}
}
运行结果
true
false
true
true
false
----------------------------
true
true
true
----------------------------
true
false
true
true
强制转换
-
父类引用指向子类的对象(多态的概念:Object object = new People();)
-
把子类转换成父类 向上转换
-
把父类转换成子类 向下转换 :强制转换
-
方便方法的调用 减少代码的重复,使代码更简洁
和基本数据类型的强制转换类似,这里是继承的父类与子类的强制转换