0
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

4 回答 4

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;
}

创建并返回一个新对象,将一个对当前对象实例的引用传递给它,以便它可以复制其日、月和年值。

于 2013-01-04T06:33:25.370 回答
1

回答 1. 在方法名之前使用类名意味着您将返回 MyDate 类型的引用变量。它只是一个返回类型。

回答 2。 this 指的是当前对象,即您的 MyDate 类对象。为了使用“new”关键字创建一个新对象,您可以使用“this”作为快捷方式。但是应该在您尝试引用对象的类中找到“this”。

于 2013-01-04T06:33:30.683 回答
0

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

因为这是一个返回类型引用的方法MyDate

"this" is referring to which object and why?

是指当前对象

于 2013-01-04T06:29:16.730 回答
0

这里为什么我们需要在方法名之前使用类名。

您正在返回一个MyDate对象,该类名是函数的返回类型。

“this”指的是哪个对象,为什么?

this总是指调用方法的当前对象。它看起来是将当前MyDate对象复制到一个新对象中并返回它。

于 2013-01-04T06:30:36.813 回答