2016-08-13 99 views
-2

我试图学习java和和一起移动OK,但我跑过这个例子,我不明白“myTuppy”是如何从myPuppy传递到名称。有人可以解释这是如何工作的?我不明白2是如何链接的。不理解构造函数和对象之间的链接


public class Puppy { 

    public Puppy(String name) { 
     // This constructor has one parameter, name. 
     System.out.println("Passed Name is :" + name); 
    } 

    public static void main(String [] args) { 
     // Following statement would create an object myPuppy 
     Puppy myPuppy = new Puppy("tommy"); 
    } 
} 

如果我们编译并运行上述程序,那么它会产生如下结果:

传递的名称是:汤米


+0

这是为什么出乎意料?你已经定义了一个构造函数,它接受一个字符串,所以当你用一个被调用的字符串构造一个实例时。 – jonrsharpe

回答

2

它没有从myPuppy传递到name。发生什么是:

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

你能想到的构造为一个参数是“名称”的函数。在这个函数的主体中,你有控制台打印语句。

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

一旦你初始化了这个对象,这个名字将被打印在屏幕上。

0

顾名思义,构造函数构造了一个对象。一个对象是一个类上的一个实例。在你的情况下,Puppy是你正在创建一个对象的类。

在Java中,新对象由new关键字创建。当你创建一个新的类的对象时,你可以想到构造函数就像一个函数一样被调用。

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