【发布时间】:2017-10-22 12:49:41
【问题描述】:
有没有办法将一个对象转换为它的“最低”类?就我而言,“弧”和“线”扩展了“曲线”。我想将两者都保存在一个 ArrayList 中,然后对它们做一些事情,这取决于它是什么类。这个例子输出“曲线”,“曲线”,但我希望它是“弧”,“线”。感谢您的帮助!
public class Test4 {
public static void main(String[] args) {
ArrayList<Curve> curves = new ArrayList<>();
Arc arc = new Arc(new Point(0, 0, 0), 0, 0, 0);
Line line = new Line(new Point(0, 0, 0), new Point(1, 0, 0));
curves.add(arc);
curves.add(line);
for (Curve i : curves) {
test(i);
}
}
public static void test(Line l) {
System.out.println("line");
}
public static void test(Arc a) {
System.out.println("arc");
}
public static void test(Curve c) {
System.out.println("curve");
}
}
编辑:感谢您的回答!到目前为止它有效,但我的问题有点复杂。我想要做的是找到两个几何对象的交点(所以线 - 弧,线 - 线,线 - 圆等)
public class Line{
//constructor and other methods
public Point[] intersection(Circle circle) {
//some code
}
public Point[] intersection(Line line) {
//some code
}
public Point[] intersection(LineSeg s) {
//some code
}
}
我想用Curve 对象访问这些方法,所以在abstract class Curve 中有一个方法intersection (Curve)。当我调用此方法时,它返回一个空数组,因为它从Curve 类中调用了该方法。如何告诉 Java 使用 Arc、Line 等类中的方法而不是 Curve 中的方法?
public abstract class Curve {
public Point[] intersection(Curve c) {
return new Point[] {};
}
}
【问题讨论】:
标签: java