instanceof 和 类型转换
instanceof:
public static void main(String[] args) { //Object > String //Object > Person > Teacher //Object > Person > Student Object object = new Student(); //System.out.println(x instanceof y);能不能编译通过取决于 x和y 是否有父子关系 System.out.println(object instanceof Student);//true 是否是true取决于 x所指向的实际类型是否是y的子类 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 Object);//true System.out.println(person instanceof Teacher);//false //System.out.println(person instanceof String);//person指向的类和Sring没有父子关系,编译出错 }
类型转换:
public class Application { public static void main(String[] args) { //类型之间的转换:父 子 //高 低 自动转换 Person obj = new Student(); //将 obj 这个对象转换为Student类型,就可以使用Student类型的方法了! Student student = (Student) obj; student.go(); //((Student) obj).go; Person person = student;//子类转换为父类可能会丢失自己本身的一些方法! } } /* 1.父类的引用指向子类的对象 2.把子类转换为父类,向上转型,直接转换 3.把父类转换为子类,向下转换,强制转换 4.方便方法的调用,减少重复代码 */