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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© honeys天空s 中级黑马   /  2013-12-14 14:42  /  1795 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 honeys天空s 于 2013-12-23 13:02 编辑

请问里氏转换是什么?

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

16 个回复

倒序浏览
一个person父类及其子类student
你可以 Person per=new Student();
这就叫里氏转换...

评分

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

查看全部评分

回复 使用道具 举报
多态性的表现!意思是可以用子类对象指向父类的引用(用子类实例化父类),反过来却不可以
Animal ani = new cat();

评分

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

查看全部评分

回复 使用道具 举报
子类可以替换父类了

也就是是父类出现的地方都可以用子类替代

switch不存在这个概念吧

评分

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

查看全部评分

回复 使用道具 举报
父类成员可以接受子类的成员,同时,如果父类成员中包含一个子类的对象,可以将父类强转换为这个子类。说的通俗些就是 Person p= new Student()(前提Student继承于Person)  Student s =(Student)p

评分

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

查看全部评分

回复 使用道具 举报
子类可以直接赋值给父类
父类若指向子类那么可以强制转化为子类

评分

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

查看全部评分

回复 使用道具 举报
V_John 中级黑马 2013-12-14 17:50:21
7#
如果问题得到解决,请修改为已解决
回复 使用道具 举报
师弟 中级黑马 2013-12-15 17:28:05
8#
就是子类可以直接赋给父类,父类能直接赋给子类,
父类可以强制转换成子类,但如果new时的类型不是要转的子类,运行会报异常

评分

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

查看全部评分

回复 使用道具 举报
No_why 中级黑马 2013-12-21 03:49:41
9#
1、子类可以赋值给父类   2、父类中如果装的是子类对象,那么可以将这个父类强转为子类对象
回复 使用道具 举报
里氏转换有两种
1、子类实例可以无条件的赋值给父类
2、当父类实例就是子类的实例时,父类实例可以强制转换成子类实例
回复 使用道具 举报
1、里氏转换
1)、子类可以赋值给父类。也就是说,如果有一个地方需要一个父类参数,那么咱们可以传一个子类参数代替
2)、如果父类里装的是子类对象,那么可以将这个父类转换为子类对象(有可能报异常)


2、is as
is:判断两个类型之间是否可以转换,如果转换成功的话,返回一个true,否则返回一个false
as:也表示类型转换,如果转换成功,则返回对应的对象,如果转换失败,则返回一个null

评分

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

查看全部评分

回复 使用道具 举报

  1.             //里氏替换原则:LSP 子类可以替换父类的位置,并且程序的功能不受影响.
  2.             //父类有的功能子类都有,所以不影响程序的功能
  3.             //父类变量指向了1个子类对象.
  4.             //当1个父类变量指向1个子类对象的时候 只能通过这个父类变量调用父类的成员.子类独有的成员无法调用.
复制代码
回复 使用道具 举报
(1):子类可以直接赋值给父类,也就是说,子类可以直接转换成父类。    (2):指向子类的父类,可以强制转换为对应的子类。
回复 使用道具 举报
http://wanjushu.blog.163.com/blog/static/8217553120129150151217/  这个帖子为你解决了所有问题
回复 使用道具 举报
陈福军 发表于 2013-12-22 15:02
http://wanjushu.blog.163.com/blog/static/8217553120129150151217/  这个帖子为你解决了所有问题 ...

谢谢 答案很详细
回复 使用道具 举报
V_John 发表于 2013-12-14 17:50
如果问题得到解决,请修改为已解决

恩恩 不好意思 这十来天都在为了准备 复试 ,学习老师给的视屏 所以都没怎么上网了
回复 使用道具 举报
王子斌 发表于 2013-12-14 14:49
一个person父类及其子类student
你可以 Person per=new Student();
这就叫里氏转换...

呃。。教学视频里讲了这个。。但是好像没有说这个叫里氏转换吧???
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马