我正在學習Java中的類和構造函數。我在示例程序中搞亂了代碼,似乎無法弄清楚究竟發生了什麼。Java中的構造函數中的最終參數
此代碼不會編譯這對我來說很有意義:
class Line {
Point start;
Point end;
Line(final Point start, final Point end) {
this.start = new Point(start);
this.end = new Point(end);
start = new Point(0.4, 0.4);
}...
我試圖通過調用Point對象的構造函數分配原來的起點對象引用到另一點的對象。最後的關鍵字與此衝突。
然而,當我刪除從點開始參數final關鍵字...
class Line {
Point start;
Point end;
Line(Point start, final Point end) {
this.start = new Point(start);
this.end = new Point(end);
start = new Point(0.4, 0.4);
}
它似乎並沒有真正改變參考,傳遞到線構造的Point對象似乎仍然指向原始對象,並且由Line構造函數的代碼保持不變。那麼是什麼給了?這與這個事實有什麼關係,即所謂的「開始」是在Line構造函數的本地範圍內?
您的構造函數中沒有修飾符。 –