2016-08-13 3 views
-2

私はJavaを学び、OKに沿って移動しようとしていますが、この例を実行していて、 "tommy"が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

1つのパラメータが「名前」である関数。この関数の本体には、コンソール印刷ステートメントがあります。

あなたのメインプログラムでそれを呼び出すと、Puppyはここに "tommy"という名前で初期化されます。

このオブジェクトを初期化すると、名前が画面に表示されます。

0

名前が既に示しているように、コンストラクタはオブジェクトを構成します。オブジェクトはクラスのインスタンスです。あなたのケースでは、Puppyはのオブジェクトを作成するクラスです。

Javaでは、新しいオブジェクトはnewキーワードで作成されます。クラスの新しいオブジェクトを作成するときに、コンストラクタが関数のように呼び出されると考えることができます。

この場合、new Puppy("tommy")はコンストラクタにString「tommy」への参照を渡し、変数nameに割り当てます。 System.out.println(...)コールは、 "tommy"への参照を渡され、コンソールに出力されます。

関連する問題