你好我有我的Java練習這些類:矩形和橢圓。是矩形的方形的孩子還是我應該做特殊的構造函數?形狀的類層次結構
// constructor for Square
public Rectangle(double side) {
this.width = side;
this.height = side;
}
橢圓的圓形子(擴展)?
這可能是一個簡單的應用程序,如Kojo或Geogebra。
你好我有我的Java練習這些類:矩形和橢圓。是矩形的方形的孩子還是我應該做特殊的構造函數?形狀的類層次結構
// constructor for Square
public Rectangle(double side) {
this.width = side;
this.height = side;
}
橢圓的圓形子(擴展)?
這可能是一個簡單的應用程序,如Kojo或Geogebra。
是的,這似乎是合理的認爲Square
的作爲Rectangle
一個子類爲其中兩個的寬度和高度是相等的:
public Square(double side) {
super(side, side); // reference to Rectangle constructor
}
類似地,同樣可以爲Circle
可以說,它實質上是橢圓形的其中兩個主要和次要半徑相等:
public Circle(double radius) {
super(radius, radius); // reference to Ellipse constructor
}
無論你想創建的具體子類來表示這些形狀是由你,你應該做哪個更有意義在你的程序中。
這裏的問題是:你是否創建了這個層次結構或僅僅是爲了設計的緣故?
如果您正在爲設計進行設計,請創建一個延伸自Rectangle
的類,否則只會讓您的代碼更加複雜而沒有任何實際的改進。你可以應用相同的圓/橢圓問題
也不! 兩者都應該是抽象形狀的子類。您可能想在此基類中進行一些座標轉換,以便子類可以簡單地實現以原點爲中心的圓或方形。但是你不希望其中一個是另一個的子類。
爲什麼? 因爲你必須設計行爲/接口,而不是數據!根據我的經驗,設計數據幾乎總是會導致令人費解的設計。
而且,除非您有具體的理由實際提供圓/矩形類(請參閱下面的註釋),否則爲圓形添加額外的類似乎不是一個好主意,因爲您已經有一個橢圓,只是多餘的代碼。我會使用專門的構造函數來構造更多的約束情況。
它應該是子接口。 –
你的練習的任務是什麼? – Behe
對我來說不清楚,圈子類在哪裏? – Sello