我知道转换实际上只能从子类到父类(super class)(向上转换)完成,但这个例子说明了我想做什么。
Class Super {}
Class Sub extends Super {}
Super super = new Super();
Sub sub = (Sub)super;
我相信这被称为“向下”类型转换,这是不允许的......
给定 Super 类型的对象,创建 Sub 类型对象的最佳方法是什么。
编辑:
这就是问题 - 将 Animal 转换为 Cat 的最佳方法是什么。
答案?从基本类型动物开始并将属性复制到猫。添加毛皮和尾部等。基本上是一个复制构造函数。这是正确答案(或好的答案)吗?
另一个编辑:
我认为我的问题很明确,但可能过于笼统。询问做某事的“最佳”方法往往会给出很多不同的回答。我意识到在不同的情况下最好的方法可能会有所不同。
我不是在寻找有关 Java 或 OO 基础知识的教程。只是征求意见,这样我就可以按照我使用最佳实践概述的方式解决这个问题。
最佳答案
Cat
是 Animal
。
如果我给你一只动物(不一定是猫),你会如何把它变成一只猫?
编辑:
几乎任何事情都有办法做。大多数时候,你不应该这样做。我相信更好的设计会消除向下转型的需要。但您可以:
在
Super
中有一个构造函数,它接受一个Sub
作为参数。实现
Super
的工厂,并有一个将Sub
作为参数的方法。
我建议您扩展您的问题,准确地告诉我们您需要什么,因为我真的认为存在更优雅的解决方案。
关于java - 将父类(super class)的对象转换为子类——向下转型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8758089/