• 里氏替换原则→类型转换


    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;而这里是不能转换的因为父类不能转换成子类,并且父类的对象也不是指向子类的一个对象

  • 相关阅读:
    组装树状结构文本框
    在jsp页面动态添加,删除文本框模块
    sql字段拆分 ,连表子查询获取值
    jsp页面技术总结
    C语言的基本数据类型
    如何学习一些需要算法的程序
    如何学习一门新的编程语言
    C++ 预处理器
    C++ 函数模板&类模板
    C++ 文件和流
  • 原文地址:https://www.cnblogs.com/lixiang0829/p/2630511.html
Copyright © 2020-2023  润新知