• 締切済み

ご教示ください。

ご教示ください。 javaで日付操作をやっています。 通常、クラスのインスタンスを作成する場合 クラス名 変数名 = new クラス名(); ですが、カレンダークラスを使用した際に Calender 変数名 = Calender.getInstance(); と出てきました。 Calenderクラスにある、getInstanceメソッドを呼び出していると思います。 クラスをインスタンスすることで、そのクラス内にある、メソッドやフィールドを初期値で使えて(コンストラクタがない場合)と認識しています。 インスタンスで、直接、メソッドを呼び出せる場合があるのでしょうか?

みんなの回答

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

staticメソッドとインスタンスメソッドの違いをまだ学修されていないと見受けます。 staticメソッドの例として、java.lang.Math クラスのメソッドは全部staticメソッドなのでいちいちMathクラスのインスタンス作成はしません。クラス名.メソッド名() で呼び出します。 double x = Math.sqrt(data); java.util.Calendar クラスは、シングルトンパターンという作りになっていて、コンストラクターは、外部から呼び出せません(無いわけではない隠蔽されてるだけ)。 static メソッドである getInstance()のなかでのみインスタンス作成可能で、一回作ったら、static private fieldに保持して、このインスタンスを返します。 次回のgetInstance()実行からは、前回作ったインスタンスを返します。

関連するQ&A

専門家に質問してみよう