将超类的对象强制转换为子类-向下转换

马修 :

我知道,转换实际上只能从子类到超类(向上转换)完成,但是此示例说明了我想做的事情。

Class Super {}
Class Sub extends Super {}

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

我相信这被称为“向下”强制转换,因此...

给定类型Super的对象,创建Sub类型的对象的最佳方法是什么。

编辑:

这就是问题-将动物转换为猫的最佳方法是什么?

答案?从基本类型的动物开始,然后将属性复制到猫。添加毛发和尾巴等。基本上是一个复制构造函数。这是正确的答案(或好答案)吗?

另一个编辑:

我认为我的问题很清楚,但也许太笼统了。寻求“最好”的做事方式往往会引起很多不同的反应。我意识到最好的方法在不同情况下可能会有所不同。

我不是在寻找有关Java或OO基础的教程。只是寻求意见,以便我可以使用最佳实践概述该问题。

卢契安格里戈尔:

A Cat是一个Animal

如果我给您一只动物(不必是猫),您将如何将其转换为猫?

编辑:

有一种方法可以执行几乎所有操作。大多数时候,您不应该这样做。我相信更好的设计将消除向下转换的需求。但是你可以:

  • 有一个Super带有Sub作为参数的构造函数。

  • 实现一个工厂,Super并有一个采用Subas作为参数的方法。

我建议您扩大问题范围,准确告诉我们您的需求,因为我确实认为存在更优雅的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章