请帮我理解java结构

时间:2013-01-04 06:27:16

标签: java

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 个答案:

答案 0 :(得分: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;
}

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

因为这是一个返回MyDate

类型引用的方法

"this" is referring to which object and why?

this指的是当前对象

答案 3 :(得分:0)

  

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

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

  

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

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