Я хочу написать класс полилинии, который нуждается в функциональности от линии и класса дуги окружности. Я знаю, что в полилинии есть линии и круговые дуги, поэтому я должен использовать интерфейс вместо продолжения (я знаю, что вы не можете расширить два класса). Проблема в том, что мне нужно будет писать код для классов линий и дуги окружности, и я хочу избежать дублирования этого кода в полилинии, если это возможно.Как я могу избежать дублирования кода при написании интерфейса?
Есть ли способ сделать это?
Вот фрагмент кода из линейного класса. Класс полилинии также должен иметь 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());
}
Можете ли вы представить эскиз вашего предполагаемого кода? – noahlz
Интерфейсы заключают контракты во время компиляции (поэтому класс, реализующий интерфейс, будет иметь реализацию этого интерфейса). Я не совсем понимаю ваш вопрос из описания; вы могли бы представить модель того, как выглядят ваши классы? – Makoto