zoukankan      html  css  js  c++  java
  • 里氏替换原则→类型转换

    Person是父类,Student是子类

    1,当需要一个父类类型对象的时候可以给一个子类对象

    例如:

    public  void  Show(Person  p)

    {

    }

    Student  stu=new Student();

    Show(stu);//这里是把子类的对象stu隐式转换成父类

    当需要一个子类类型对象的时候给一个父类类行的对象是不可以的

    例如:

    Public  void  Show(Student  stu)

    {

    }

    person   p=new  Person();

    Show(p);//在这里是不能这样用的因为父类不能转换成子类

    可以这样写Person  p=new Student();

    Student   st=(Student)p;//这里是把父类强转成子类。因为父类的对象就是指向这个子类所以可以强砖不会报错

    Show(st);//这时候st就是Student的类型的一个对象

    ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

    1,把子类型赋值给父类型是发生了隐式转换

    Student  stu=new Student();

    Person   p=stu;//这里就是把子类型赋值给父类型的对象stu发生了隐式转换

    2,把父类类型赋值给子类需要显示转换而前提是父类的一个对象是指向子类的一个对象这样就可以转换成功否则会报错

    例如:

     Person   p=new Student();//这里是父类的对象就是指向子类的对象

    Student  stu=(Student)p;//这里就是把父类的对象P显示转换成子类因为父类的对象就是指向子类的一个对象

    判断一个对象是否属于某个类型语法:

    if(stu  is  person)

    {

    }

    也可以通过as进行转换

    Person  p=new Person();

     Student  stu=p   as   Student;//如果能转换则回返回结果不能转换则返回null;而这里是不能转换的因为父类不能转换成子类,并且父类的对象也不是指向子类的一个对象

  • 相关阅读:
    spring mvc全局异常处理
    spring mvc URL忽略大小写
    easyui datagrid 加载两次请求,触发两次ajax 请求 问题
    根据多列去除重复记录,保留具有特殊列值的行,去除其他行
    ibatis 批量插入oracle总结
    ibatis 参数错误,无效字符
    jvm 原理和优化
    tomcat 内存问题 xms xmx permsize maxPermsize
    java 中与 或 非 异或 和位移运算
    项目jar包管理,使用 .userlibraries 文件增加jar包的可移植性,明确jar包依赖,多项目共用jar包里
  • 原文地址:https://www.cnblogs.com/lixiang0829/p/2630511.html
Copyright © 2011-2022 走看看