为什么我们在Java中实例化Calendar Class(abstract)

时间:2013-07-09 20:06:21

标签: java oop static

我是一名初学Java程序员,我一直在阅读有关Calendar类的内容。它是一个抽象类,它的所有方法都是静态的,但使用方法如下:

Calendar cal = Calendar.getInstance();

使用cal调用以下方法的地方:

cal.setTimeinMillis(day1); 

我对此感到困惑。在针对类调用方法时,为什么我们需要一个引用变量?这对于静态方法来说是如何合法的?

4 个答案:

答案 0 :(得分:8)

Calendar cal = Calendar.getInstance();

不是调用构造函数,它只是调用一个(静态)方法来返回某个子类(Calendar)的实例。

答案 1 :(得分:3)

再看看the documentation;做任何有趣事情的日历的大多数方法(除了getInstance()方法)都不是静态的并且需要一个实例(它实际上是日历所代表的时刻的容器)。

答案 2 :(得分:3)

1)日历不是Calandar

2)Calendar.getInstance()将返回日历的一些具体实现,可能是GregorianCalendar

3)cal.setTimeinMillis(day1);是对象方法,不是静态的。

答案 3 :(得分:1)

setTimeInMillis()不是静态的。您需要调用getInstance()方法来返回实例的原因是有几个getInstance()方法,您可以针对不同的时区和/或不同于默认值的语言环境调用它们。您选择的时区或区域设置会影响其他方法的工作方式。