我知道铸造真的只能从一个子类到一个超类(向上铸造),但这个例子说明了我想做的事情.
Class Super {} Class Sub extends Super {} Super super = new super(); Sub sub = (Sub)super;
我相信这被称为“下”铸造,这是不允许的…
创建类型为Sub的对象的最佳方法是给出一个类型为Super的对象.
编辑:
这就是问题 – 将动物转化为猫的最佳方式是什么?
答案?从基本类型的动物开始,并将属性复制到猫.添加毛皮和尾巴等.基本上是一个复制构造函数.这是正确的答案(还是一个很好的答案)?
其他编辑:
我认为我的问题很清楚,但也许是一般的.要求“最好”的方式做某事往往会给出很多不同的回应.我意识到最好的方式可以在不同的情况下有所不同.
我不是在寻找有关Java或OO基础知识的教程.只是钓鱼的意见,所以我可以解决这个问题,因为我已经概述了使用最佳做法.
解决方法
猫是动物.
如果我给你一只动物(不必是猫),那么你怎么把它转换成一只猫呢?
编辑:
有办法做几乎任何事情.大多数时候,你不应该.我相信更好的设计将不再需要倒车.但是你可以:
>在Super中有一个构造函数,它以Sub为参数.
>实施一个Super的工厂,并具有一个Sub作为参数的方法.
我建议你扩大你的问题,告诉我们你需要什么,因为我真的认为一个更优雅的解决方案存在.