图说里式转换

查了很多关于里式转换的概念,都是讲什么子类转父类,父类转子类的内容,把我转懵了。在自己不懈的努力下终于看到了点眉目。里式转换到底是什么东东,看图:

1.父类直接转换为子类——出错:

Person P = new Person();
Student stu = (Student)p;
//stu调用父类方法会报错

2.父类想转换为子类——实例化是关键

Person p = new Student();
Student t = (Student)p;
//父类实例化一个子类,并转化为此子类,实现了父类转化为子类

3.子类间转化——出错:

Person p = new Teacher();
Student stu = (Student)p;
//父类实例化为子类Teacher,子类Teacher转化为子类Student

4.子类转换为父类——转化方式很重要

Teacher t = new Teacher();
Person p = t;
//先实例化子类,再将子类直接转化为父类

深挖一下——纯属个人观点:

看父类位置有没有觉得父类好比是一个中转站,子类不能完成的事通过中转站而完成了,中转站的关键或实现方式就是实例化了,所以为什么不直接用而是用实例化的方法来使用的原因就清楚了吧:一是使中转站的范围更大,能力更强;二是使代码更具有灵活性,不死板,复用率更高了。

每一件事都有它存在的理由,细想一下总会感叹逻辑上它在此处存在的合理性,不禁叫好,设计者往往能打破周围的限制,从而发挥无限的想象去创造。什么时候能突破思维的限制,什么时候就更进一步了……期待吧

至于为什么要有里式转换,要它有何用,我还需要一定的代码量与认知,敬请下回讲解吧。

 

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值