小白-纯白 2021-12-29 15:01 采纳率: 50%
浏览 188
已结题

C#中的里氏转换是干嘛用的?

  • 里氏转换具体是用来干什么的?

  • 如果想要用父类的方法,创建一个子类继承父类不就可以使用父类的方法和属性了吗?

  • 写回答

5条回答 默认 最新

  • 关注

    里氏转换的两个作用:
    1)、子类可以赋值给父类
    2)、如果父类中装的是子类对象,那么可以将这个父类强转为子类对象。
    子类继承父类,子类继承父类的protected和public方法和属性。这个数一个从父类到子类的继承关系。
    里氏转换关注的是子类和父类的转换关系。
    因为子类可能比父类拥有更多的属性和方法,如果没有里氏转换,子类赋值给子类就会存在问题。比如,Person类,Teacher类和Student类都继承Person类,所有的Teacher和Studeng都可以放入一个Person数组中,这样就类似于子类赋值给父类的一个应用,如果没有里氏转换,这个数据的管理就需要2个数组来分别存储。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN专家-showbo 2021-12-29 15:13
    关注
    评论
  • 神仙别闹 2021-12-29 15:13
    关注

    1、里氏转换
    1)、子类可以赋值给父类
    2)、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。

    2、子类对象可以调用父类中的成员,但是父类对象永远都只能调用自己的成员。

    // Student s = new Student();
    Person p = new Student();//s;
    Person p1 = new Teacher();
    
    
    if (p is Student)
    {
    Student ss = (Student)p;
    ss.StudentSayHello();
    }
    else {
    Console.WriteLine("转换失败");
    }
    //is:表示类型转换,如果能够转换成功,则返回一个true,否则返回一个falseas:表示类型转换,如果能够转换则返回对应的对象,否则返回一个null
    
    
    评论
  • Admini$trat0r .net领域新星创作者 2021-12-29 15:21
    关注
    评论
  • CrisYoung 2021-12-29 15:27
    关注

    如果你的子类已经重写了父类的方法,但你又要使用父类方法而不是子类的,那这个时候就要里氏转换

    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 stata合并季度数据和日度数据
  • ¥15 c语言练习:统计词频
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色
  • ¥50 监控摄像头 乐橙和家亲版 保存sd卡的文件怎么打开?视频怎么播放?
  • ¥15 Python的Py-QT扩展库开发GUI
  • ¥60 提问一下周期性信信号的问题
  • ¥15 jtag连接不上fpga怎么办
  • ¥30 c语言停车场模型。。