我有ClassA和ClassB,其中ClassA是超类。
ClassA使用NodeA,ClassB使用NodeB。
第一个问题:方法参数。 ClassB需要NodeB类型,但是我不能从子类转换为超类。这意味着我无法设置NodeB特有的属性。
第二个问题:当我需要向ClassB添加节点时,必须实例化一个新的NodeB。但是,我无法在超类中执行此操作,因此必须重写插入才能使用NodeB。
有没有解决的办法,还是我必须重写整个内容?
最佳答案
我认为,解决这个难题的最佳解决方案是使用泛型:将公共代码放入(可能是抽象的)由NodeType
参数化的公共超类中。 A和B中的每个都可以分别为CommonSuper<NodeA>
和CommonSuper<NodeB>
子类,并在需要时对其特定的节点类型进行特定处理。这样,您的代码中几乎没有重复,但是能够完成您需要的所有工作。
关于java - 在这种情况下可以使用继承吗? (Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2807910/