我想创建一个能够容纳两种不同类(球体和矩形)的树结构(二叉树)。Java中的泛型/接口和树结构
由于明显的原因,我的球体和矩形将有不同的方法来获得它们的大小(getSize()),我也打算有一个构造函数(对于这两个类)它需要两个对象(两个球体或两个矩形)他们创造一个更大的球体或矩形。
我应该如何处理编码节点,以便它可以在需要时调用适当方法的节点上存储球体或矩形?
如果我将对象转换为我需要的类型,一个简单的接口会完成此操作吗?
感谢,
DMCB
我想创建一个能够容纳两种不同类(球体和矩形)的树结构(二叉树)。Java中的泛型/接口和树结构
由于明显的原因,我的球体和矩形将有不同的方法来获得它们的大小(getSize()),我也打算有一个构造函数(对于这两个类)它需要两个对象(两个球体或两个矩形)他们创造一个更大的球体或矩形。
我应该如何处理编码节点,以便它可以在需要时调用适当方法的节点上存储球体或矩形?
如果我将对象转换为我需要的类型,一个简单的接口会完成此操作吗?
感谢,
DMCB
我会创建三个类。 包含矩形和球体的所有常见代码的抽象类Shape。
public abstract class Shape{
// contains all common code related to shapes
// such as child elements
Shape parentNode; // This will help navigate up
List<Shape> children; // This will help navigate down the tree
// Define, merge, split methods which are common to all shapes
// define shape specific methods
}
public class Rectangle : Shape{
// Implement shape's abstract methods for this class
}
public class Sphere : Shape{
// Implement shape's abstract methods for this class
}
所有形状的具体方法应当留下抽象如getSize()
,drawShape()
,mergeShape()
。 此外,也许不相关,但the Composite design pattern可能很好用于此问题
请问一个简单的界面做到这一点,如果我投的对象,我需要的类型?
接口Shape
似乎是合适的。如果操作正确,插入项目时根本不需要演员。
是的,一个接口,您可以在其中存储常用方法并在每个类中实现它们。然后多态性将负责在运行时调用适当的方法。