A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 有你珍贵 中级黑马   /  2013-10-23 19:31  /  1197 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 有你珍贵 于 2013-10-23 23:24 编辑

    今天学习了关于里氏转换.子类对象可以复制给父类。如果弗雷装的是子类的对象,这个父类就可以强转成子类对象。对这个还是有些疑惑,里氏转换到底有什么用处呢?求大神解答.不胜感激!

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

4 个回复

倒序浏览

回帖奖励 +1

这个在winform中用到很多,事件执行方法有个参数叫sender,用里氏转换就能知道发生的事件从而执行不同的方法。
比如说,button1  和  button2   点击事件后执行的方法代码重复,但是又有一点区别,比如button1  的事件执行方法要求输出点击了button1,而button2的事件执行方法要求输出点击了button2.
这个时候用里氏转换,在输出内容中用变量参数来替代具体内容。
Button  btn=(Button)sender;
Console.WriteLine("点击了 {0}",btn);
回复 使用道具 举报
里氏转换原则
        1. 子类对象可以直接赋值为父类变量
                父类 <父类变量> = new 子类();
                Person p = new Student();
                Student stu = new Student();
                Person p = stu;
        2. 指向子类对象的父类变量,可以强制类型转化为对应的子类对象
                Student stu1 = (Student)p;
        3. 意义就是为了实现多态。
        4. 面向对象的三大特性:继承 封装 多态 。
        继承是多态实现的前提,里氏转换时多态实现的条件

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
里氏转换就是:派生类(子类)对象能够替换其基类对象被使用

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
里氏转换在那节视频里呀?在学习的过程中我怎么没有遇见过呀?   面试那天老师问我这玩意儿!我居然连名称都不晓得
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马