zoukankan      html  css  js  c++  java
  • 引用变量的类型强转以及InstanceOf方法的使用

    引用到的类:
    1 class Person{
    2     String name;
    3 }
    4 class Student extends Person{
    5     String sut_no;
    6 }
    7 class ClassMate extends Student{
    8     
    9 }
    View Code
    总结:使用instanceOf的时候注意 左边运行时类型是右边或其子类的类型(右边的实例) 返回true
        左边的编译类型必须是右边类型或其父类类型 (否则编译失败) 强制转换时并不是所有的父类都可以强转子类(编译都可以通过)只有满足父类的运行时类型是该类或该子类方可

    public static void main(String[] args) throws Exception {
            String str = "test";
            System.out.println(str instanceof Object); //true
            Long number = new Long(123);
            System.out.println(number instanceof Object); //true
            
            //System.out.println(number instanceof String);  编译通不过
            Person p = new Person();
            Student s = new Student();
            System.out.println(s instanceof Person); //true
            
            Person stu = new Student();
            System.out.println(stu instanceof Person); //true
            System.out.println(stu instanceof Student); //true
            System.out.println(stu instanceof ClassMate); //false
            
            // java.lang.ClassCastException: Person cannot be cast to Student
            // 将父类强制转换为子类需要注意
            // 如果该父类的运行时类型是该类 或该子类 则可以
            // 否则会出现 ClassCastException
            // Person person = new Person();
            // Student student = (Student) person;
            
            Person person2 = new ClassMate();
            Student student2 = (Student)person2;
            
            System.out.println(student2 instanceof Person); //true
            System.out.println(student2 instanceof Student); //true
            //总结:使用instanceOf的时候右边类是 左边对象的运行时类型或者是运行时类型父类的时候返回true;
            //强制转换时并不是所有的父类都可以强转子类(编译都可以通过)只有满足父类的运行时类型是该类或该子类方可
        }

    2、引用变量的强制类型转换

      引用类型之间的转换只能把一个父类变量转换成子类类型,如果两个没有任何继承关系的类型,则无法进行

      类型转换,否则编译时就会报错。如果试图将一个父类转换成子类,那么父类对象的运行时类型必须是子类

      的实例才行,否则在运行时引发ClassCastException;

    3、所谓创建A类的实例:就是说这个实例是A类或其子类的对象 instanceOf的作用就是判断 左边对象运行时类型到底是不是 右边的实例 若是 返回true 否则false

  • 相关阅读:
    [openjudge] jubeeeeeat
    [BJOI2006] 狼抓兔子
    [模板]网络最大流
    [HNOI2002]营业额统计
    【Java学习笔记之十一】Java中常用的8大排序算法详解总结
    【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题
    【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
    【Java学习笔记之八】JavaBean中布尔类型使用注意事项
    【Java学习笔记之七】java函数的语法规则总结
    二分图匹配--匈牙利算法模板
  • 原文地址:https://www.cnblogs.com/Wen-yu-jing/p/3858031.html
Copyright © 2011-2022 走看看