实例化公历对象

Instantiating a Gregorian Calendar object

在Oracle Java关于公历的文档中,给出了一个例子:

// create a GregorianCalendar with the Pacific Daylight time zone
// and the current date and time
Calendar calendar = new GregorianCalendar(pdt);

我了解 GregorianCalendarCalendar 摘要 class 的子class。

我从例子中不明白的是为什么它没有这样写代码:

GregorianCalender calendar = GregorianCalendar(pdt);

100% 可以这样做:

GregorianCalender calendar = GregorianCalendar(pdt);

示例显示的原因:

Calendar calendar = new GregorianCalendar(pdt);

因为这样比较灵活

假设您的代码适用于任何类型的日历。换句话说,它不依赖于公历中的具体细节。在这种情况下,您可以使用 Calendar 作为变量的类型,您的代码仍然可以正常编译和工作。

通过使用 Calendar 作为变量类型,您允许变量 calendar 保存任何类型的日历。假设您的需求发生变化,您现在允许用户选择他们想要使用的日历系统。现在你只需要改变 = 符号的部分。无需更改变量的类型。