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

  • 相关阅读:
    topcoder srm 708 div1
    FBX SDK在vs 2010下面的配置
    Google Protocol Buffer在vs2010下配置
    topcoder srm 709 div1
    topcoder srm 707 div1
    CNN Mnist
    SVM学习笔记5-SMO
    SVM学习笔记4-核函数和离群点的处理
    SVM学习笔记3-问题转化
    如何使用SSL pinning来使你的iOS APP更加安全
  • 原文地址:https://www.cnblogs.com/lixiang0829/p/2630511.html
Copyright © 2011-2022 走看看