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;
}
}
4 に答える
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;
}
新しいオブジェクトを作成して返し、現在のオブジェクト インスタンスへの参照を渡し、その日、月、年の値をコピーできるようにします。
1 の答え。メソッド名の前にクラス名を使用すると、MyDate 型の参照変数を返すことになります。これは単なる戻り値の型です。
2 の答え。これは、MyDate クラス オブジェクトである現在のオブジェクトを参照します。「new」キーワードで新しいオブジェクトを作成するには、「this」をショートカットとして使用できます。ただし、「this」は、オブジェクトを参照しようとしているクラス内にある必要があります。
here why do we need to use Class name before the method name.
これは型の参照を返すメソッドだからですMyDate
"this" is referring to which object and why?
これは現在のオブジェクトを参照しています
ここで、メソッド名の前にクラス名を使用する必要があるのはなぜですか。
オブジェクトを返していMyDate
ます。そのクラス名は関数の戻り値の型です。
「これ」はどのオブジェクトを参照しており、その理由は何ですか?
this
メソッドが呼び出される現在のオブジェクトを常に参照します。現在のMyDate
オブジェクトを新しいオブジェクトにコピーして返すようです。