instanceof用法和类的转换
instanceof作用:判断一个引用类型变量所指向的对象是否是一个类
四个代码一起食用
package com.oop.demo07;
public class Application {
public static void main(String[] args) {
//Object > String
//Object > Person > Teacher
//Object > Person > Student
Object obj = new Student();
System.out.println(obj instanceof Student);//true
System.out.println(obj instanceof Person);//true
System.out.println(obj instanceof Object);//true
System.out.println(obj instanceof Teacher);//false
System.out.println(obj instanceof String);//false
System.out.println("========================================");
Person per = new Student();
System.out.println(per instanceof Student);//true
System.out.println(per instanceof Person);//true
System.out.println(per instanceof Object);//true
System.out.println(per instanceof Teacher);//false
//System.out.println(per instanceof String);//不可编译 Person 与String 没有血缘关系
//编译成功与否根据左侧的类型,看他们是不是有血缘关系。右侧new的类型决定true和false
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);
Person person = new Person();
System.out.println(person instanceof Student);//false
System.out.println(person instanceof Person);//true
System.out.println(person instanceof Object);//true
System.out.println(person instanceof Teacher);//false
//System.out.println(person instanceof String);
System.out.println("======================================");
/*
1, 父类引用指向子类的对象
2,把子类转换成父类,向上转型
3,把父类转换成子类,向下转型:强制转换
4,方便方法的调用,减少重复的代码!简洁
核心思想:抽象
封装、继承、多态 抽象类 接口
*/
//类型之间的转换:父 子
//高 低
Person per1 = new Student();
//Student 将这个对象转换为Student类型,我们就可以用Student类型里面的方法了!
((Student) per1).go();
//子类转换成父类,可能丢失自己的本来的一些方法
Student student1 = new Student();
student1.go();
Person per2 = student1;
//per.go();方法丢失
}
}
接下
package com.oop.demo07;
public class Person {
public void run(){
System.out.println("run");
}
}
接下
package com.oop.demo07;
public class Student extends Person {
public void go(){
System.out.println("go");
}
}
接下
package com.oop.demo07;
public class Teacher extends Person {
}