2013-01-04 86 views
-1
public class MyDate { 
    private int day = 1; 
    private int month = 1; 
    private int year = 2000; 

    public MyDate(int day, int month, int year) 
    { 
     this.day = day; 
     this.month = month; 
     this.year = year; 
    } 

    public MyDate(MyDate date) 
    { 
     this.day = date.day; 
     this.month = date.month; 
     this.year = date.year; 
    } 

    /* 
     here why do we need to use Class name before the method name? 
    */ 
    public MyDate addDays(int moreDays) 
    { 
     // "this" is referring to which object and why? 
     MyDate newDate = new MyDate(this); 
     newDate.day = newDate.day + moreDays; 

     // Not Yet Implemented: wrap around code... 
     return newDate; 
    } 

    public String toString() 
    { 
     return "" + day + "-" + month + "-" + year; 
    } 
} 
+2

請嘗試閱讀Java的基本知識,如方法簽名和關於此關鍵字。 –

+0

似乎是MyDate是不可變的。 –

回答

1

this將引用您將創建的當前對象實例。在任何java方法內部,this將始終保存對其實例的引用。

一個例子 -

MyDate myDate = new MyDate(10, 10, 2012); 
myDate.addDays(10); 

,你是想知道將指向這裏創建newDate對象行。該生產線 -

MyDate newDate = new MyDate(this); 

將使用此構造 -

public MyDate(MyDate date) { 
    this.day = date.day; 
    this.month = date.month; 
    this.year = date.year; 
} 

創建並返回一個新的對象,傳遞一個參考當前對象實例,以便它可以複製它的日,月,年價值。

0

here why do we need to use Class name before the method name.

,因爲這是其返回類型MyDate

"this" is referring to which object and why?

this的參考方法指的是當前對象

0

這裏我們爲什麼需要在方法名稱之前使用Class名稱。

您正在返回一個MyDate對象,該類名稱是該函數的返回類型。

「this」是指哪個對象,爲什麼?

this始終引用調用方法的當前對象。它看起來是將當前的MyDate對象複製到一個新對象並返回。

1

對此問題的回答參考1. 在方法名之前使用類名意味着您要返回類型爲MyDate.Its的引用變量只是返回類型。

對答案爲 這指的是當前對象,即MyDate類對象。 爲了用'new'關鍵字創建一個新的對象,你可以使用'this'作爲快捷方式。但是'this'應該在你想要引用對象的類中找到。