java – 将超类的对象转换为子类 – 下拉式

前端之家收集整理的这篇文章主要介绍了java – 将超类的对象转换为子类 – 下拉式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道铸造真的只能从一个子类到一个超类(向上铸造),但这个例子说明了我想做的事情.
Class Super {}
Class Sub extends Super {}

Super super = new Super();
Sub sub = (Sub)super;

我相信这被称为“下”铸造,这是不允许的…

创建类型为Sub的对象的最佳方法是给出一个类型为Super的对象.

编辑:

这就是问题 – 将动物转化为猫的最佳方式是什么?

答案?从基本类型的动物开始,并将属性复制到猫.添加毛皮和尾巴等.基本上是一个复制构造函数.这是正确的答案(还是一个很好的答案)?

其他编辑:

我认为我的问题很清楚,但也许是一般的.要求“最好”的方式做某事往往会给出很多不同的回应.我意识到最好的方式可以在不同的情况下有所不同.

我不是在寻找有关Java或OO基础知识的教程.只是钓鱼的意见,所以我可以解决这个问题,因为我已经概述了使用最佳做法.

解决方法

猫是动物.

如果我给你一只动物(不必是猫),那么你怎么把它转换成一只猫呢?

编辑:

有办法做几乎任何事情.大多数时候,你不应该.我相信更好的设计将不再需要倒车.但是你可以:

>在Super中有一个构造函数,它以Sub为参数.
>实施一个Super的工厂,并具有一个Sub作为参数的方法.

我建议你扩大你的问题,告诉我们你需要什么,因为我真的认为一个更优雅的解决方案存在.

猜你在找的Java相关文章