黑马程序员技术交流社区

标题: 里氏转换 [打印本页]

作者: honeys天空s    时间: 2013-12-14 14:42
标题: 里氏转换
本帖最后由 honeys天空s 于 2013-12-23 13:02 编辑

请问里氏转换是什么?
作者: 王子斌    时间: 2013-12-14 14:49
一个person父类及其子类student
你可以 Person per=new Student();
这就叫里氏转换...
作者: 梦想是否存在    时间: 2013-12-14 15:32
多态性的表现!意思是可以用子类对象指向父类的引用(用子类实例化父类),反过来却不可以
Animal ani = new cat();
作者: 丑男先生。    时间: 2013-12-14 15:33
子类可以替换父类了

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

switch不存在这个概念吧
作者: 上帝的尊严    时间: 2013-12-14 16:36
父类成员可以接受子类的成员,同时,如果父类成员中包含一个子类的对象,可以将父类强转换为这个子类。说的通俗些就是 Person p= new Student()(前提Student继承于Person)  Student s =(Student)p
作者: y494890511    时间: 2013-12-14 17:12
子类可以直接赋值给父类
父类若指向子类那么可以强制转化为子类
作者: V_John    时间: 2013-12-14 17:50
如果问题得到解决,请修改为已解决
作者: 师弟    时间: 2013-12-15 17:28
就是子类可以直接赋给父类,父类能直接赋给子类,
父类可以强制转换成子类,但如果new时的类型不是要转的子类,运行会报异常
作者: No_why    时间: 2013-12-21 03:49
1、子类可以赋值给父类   2、父类中如果装的是子类对象,那么可以将这个父类强转为子类对象
作者: 如远行客    时间: 2013-12-21 08:39
里氏转换有两种
1、子类实例可以无条件的赋值给父类
2、当父类实例就是子类的实例时,父类实例可以强制转换成子类实例
作者: 雨中恋人    时间: 2013-12-21 11:12
1、里氏转换
1)、子类可以赋值给父类。也就是说,如果有一个地方需要一个父类参数,那么咱们可以传一个子类参数代替
2)、如果父类里装的是子类对象,那么可以将这个父类转换为子类对象(有可能报异常)


2、is as
is:判断两个类型之间是否可以转换,如果转换成功的话,返回一个true,否则返回一个false
as:也表示类型转换,如果转换成功,则返回对应的对象,如果转换失败,则返回一个null
作者: 好运不会眷顾傻    时间: 2013-12-21 19:41

  1.             //里氏替换原则:LSP 子类可以替换父类的位置,并且程序的功能不受影响.
  2.             //父类有的功能子类都有,所以不影响程序的功能
  3.             //父类变量指向了1个子类对象.
  4.             //当1个父类变量指向1个子类对象的时候 只能通过这个父类变量调用父类的成员.子类独有的成员无法调用.
复制代码

作者: 【⑨】№①妮    时间: 2013-12-22 14:09
(1):子类可以直接赋值给父类,也就是说,子类可以直接转换成父类。    (2):指向子类的父类,可以强制转换为对应的子类。
作者: 陈福军    时间: 2013-12-22 15:02
http://wanjushu.blog.163.com/blog/static/8217553120129150151217/  这个帖子为你解决了所有问题
作者: honeys天空s    时间: 2013-12-23 13:06
陈福军 发表于 2013-12-22 15:02
http://wanjushu.blog.163.com/blog/static/8217553120129150151217/  这个帖子为你解决了所有问题 ...

谢谢 答案很详细
作者: honeys天空s    时间: 2013-12-23 13:07
V_John 发表于 2013-12-14 17:50
如果问题得到解决,请修改为已解决

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

呃。。教学视频里讲了这个。。但是好像没有说这个叫里氏转换吧???




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2