Java Calendar? GregorianCalendar? 抽象クラス
たとえばこんなコードがあったとする
import java.util.*; public class calendartest { public static void main(String[] args) { Calendar cl = new GregorianCalendar(); ーー① GregorianCalendar cl = new GregorianCalendar(); ーー② System.out.println(cl.getTime()); } }
①②どちらも実行可能なのだが
GregorianCalendar で定義されたメソッド、例えば isLeapYear(int) とかを使いたいなら
GregorianCalendar型の変数にしとかないと面倒くさい。
Calendarクラスは特殊で抽象クラスと呼ばれるもの。
インスタンス化するためには
Calendar today = Calendar.getInstance(); Calendar today = new Calendar(); //←できない
Calendarみたいな抽象クラスはそれ自身をインスタンス化しても意味が無い。
上記はCalendar classをもとに定義されたGregorianCalendarクラスのインスタンスを取得しているイメージ
また.getInstance()
はオブジェクト.メソッド ではなく クラス.メソッド という形(newしなくても使えるってこと)
static Calendarってなってるから
=====================================================
java api参照
getInstance
public static Calendar getInstance()
デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得します。返された Calendar は、デフォルトロケールを持つデフォルトタイムゾーンの現在時刻に基づいています。
戻り値:
Calendar