【发布时间】:2013-10-09 02:04:32
【问题描述】:
我有这个代码:
public interface Position {
public int getX();
public int setX(int x);
public int getY();
public int setY(int y);
}
public StandardPosition implements Position {
// STANDARD implementation of Position here
}
public abstract class Mover {
public abstract Position move ( Position originalPosition );
}
“移动器”是将某物从初始位置移动到最终位置的东西。
现在这里是有趣的部分......一些移动器更复杂,并且使用更复杂的 Position 对象。
public class ComplicatedPosition extends StandardPosition {
// ADDS Y DIMENSION
private int y;
public int getY() { return(y); }
public void setY(int y) { this.y = y ; }
}
public class MoreComplicatedMover extends Mover {
@Override
public void Position move(Position initialPosition) {
ComplicatedPosition q = (ComplicatedPosition) initialPosition;
// Do a transformation and
// return a new position
return(q);
}
}
我的问题是...有什么办法可以避免从 Position 转换为 ComplicatedPosition ...(我们正在从接口转换为类 .. 似乎有点尴尬)... 提出这个问题的另一种方法是:还有其他方法可以设置此代码吗? 干杯!
【问题讨论】:
-
您需要澄清一些代码示例。 Position.setX() 和 Position.setY() 是否应该没有参数? ComplicatedPosition 是类还是接口?只有接口可以扩展其他接口,但接口不能有例子中的实现。
-
感谢@Dev 我刚刚进行了编辑;-)
标签: java oop abstract-class