我想编写一个折线类,它需要直线和圆弧类的功能。我知道折线有直线和圆弧,因此我应该使用接口而不是扩展(我知道你不能扩展两个类)。问题是我还需要为直线和圆弧类编写代码,如果可能的话,我想避免在折线类中复制这些代码。
有没有办法做到这一点?
这是来自 line 类的代码片段。折线类还需要有 getMidPoint()、containsPoint(x,y) 等。我还没有编写圆弧的代码,但它具有类似的功能 getMidPoint()、 containsPoint(x,y)。
public Line (double x1,double y1, double x2,double y2){
super (x1,y1,x2,y2);
}
public ACSPoint getMidPoint(){
ACSPoint p = new ACSPoint();
p.x((this.start.x()+this.end.x())/2);
p.y((this.start.y()+this.end.y())/2);
return p;
}
@Override
public boolean containsPoint(double x, double y){
boolean containsPoint = super.containsPoint(x, y);
if (containsPoint){
if (x<this.start.x()||x>this.end.x()){
return false;
}
}
return containsPoint;
}
@Override
public boolean containsPoint(ACSPoint p){
return this.containsPoint(p.x(), p.y());
}