不要理解构造函数和对象之间的联系

时间:2016-08-13 21:41:25

标签: java object constructor

我正在努力学习java并且继续前进,但是我遇到了这个例子,我不明白" tommy"从myPuppy传递到name。有人可以解释一下这有用吗?我不明白这两者是如何联系在一起的。

public class AnalyticsExceptionHandler implements UncaughtExceptionHandler
{
    // Private
    private UncaughtExceptionHandler _defaultHandlerRef;

    public AnalyticsExceptionHandler(UncaughtExceptionHandler defaultHandlerRef)
    {
        this._defaultHandlerRef = defaultHandlerRef;
    }

    @Override
    public void uncaughtException(Thread t, Throwable e)
    {
        // ...track and send the exception to Google Analytics...
        _defaultHandlerRef.uncaughtException(t, e);
    }
}

如果我们编译并运行上面的程序,那么它将产生以下结果:

传递的名字是:tommy

3 个答案:

答案 0 :(得分:2)

它未从myPuppy传递到name。会发生什么:

  • 评估Puppy表达式时,会创建一个新的new Puppy(...)对象。
  • 调用构造函数。构造函数中的每个参数(在本例中为name)将替换为传递给new的参数。在这种情况下"tommy"。因此,在构造函数中,变量name现在引用字符串tommy
  • 然后将新构造的对象分配给变量myPuppy

答案 1 :(得分:0)

您可以将构造函数视为具有一个“name”参数的函数。在此函数的主体中,您有控制台打印语句。

一旦你在你的主程序中调用它,那么将使用提供的名称初始化Puppy,这里是“tommy”。

初始化此对象后,名称将打印在屏幕上。

答案 2 :(得分:0)

正如名称所暗示的那样,构造函数构造一个对象。对象是类的实例。在您的情况下,Puppy是您要创建对象的类。

在Java中,new关键字创建了一个新对象。在创建类的新对象时,可以将构造函数视为函数。

在这种情况下,new Puppy("tommy")会向构造函数传递对String“tommy”的引用,并将其分配给变量name。然后System.out.println(...)调用将传递给“tommy”的引用并在控制台上打印出来。