我想編寫一個需要線和圓弧類功能的折線類。我知道折線有線條和圓弧,因此我應該使用接口而不是擴展(我知道你不能擴展兩個類)。問題是,我將需要編寫代碼行和圓弧類以及我想避免重複在折線類中的代碼如果可能的話。如何在編寫接口時避免重複代碼?
有沒有辦法做到這一點?
這是線類的一段代碼。 polyline類還需要具有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