关于 Calendar

GFox 2002-03-20 08:56:23
先看看下面的这段代码,我是从DW上抄来的:

import java.io.*;
import java.util.*;

public class WhatIsCalendar {

public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
if (calendar instanceof GregorianCalendar)
System.out.println("It is an instance of GregorianCalendar");
}
}

编译运行通过。
可是小弟就是不明白:
GregorianCalendar 是由 Calendar 派生出来的,也就是说,在写作 Calendar 时,GregorianCalendar 还没有的。那 Calendar.getInstance() 怎么可以生成得到一个子类来返回呢?

如果 Calendar.getInstance() 返回的只是一个 Calendar ,那么 Calendar 是一个abstract class ,又怎么可以实例化呢?
...全文
32 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjp009 2002-03-20
  • 打赏
  • 举报
回复
getInstance()
get a Calendar using the default time zone and locale.
return a Calendar.
GFox 2002-03-20
  • 打赏
  • 举报
回复
嗯,我做到了,谢谢大家 ^_^
zjp009 2002-03-20
  • 打赏
  • 举报
回复
类里使用自己或者子类都没有问题啊。
写过链表吗?
aprim 2002-03-20
  • 打赏
  • 举报
回复
先看书(OO),再问
GFox 2002-03-20
  • 打赏
  • 举报
回复
我就是不明白怎么可以从父类里调用子类啊?^_^
GFox 2002-03-20
  • 打赏
  • 举报
回复
嗯,现在从源码看来,的确是
return new GregorianCalendar();应该是一个子类

但是这样子
public class GregorianCalendar
extends Calendar

这不是说明了,得先有 Calendar 吗?
那么它在写 Calendar 的时候,怎么可以找到GregorianCalendar啊???
ChDw 2002-03-20
  • 打赏
  • 举报
回复
Calendar中的源代码:
/**
* Gets a calendar using the default time zone and locale.
* @return a Calendar.
*/
public static synchronized Calendar getInstance()
{
return new GregorianCalendar();
}
sharetop 2002-03-20
  • 打赏
  • 举报
回复

对头,关键是看getInstance方法的实现,如果它返回的就是一个GregorianCalendar,什么问题不都解决了吗?

所以你看一个Calendar的源码,看这个方法到底是如何实现的,不就明白了吗?
GFox 2002-03-20
  • 打赏
  • 举报
回复
to gularess() :

谢谢你,可是,同上,在没有子类的情况下,它怎么可以生成一个子类来返回呢?
GFox 2002-03-20
  • 打赏
  • 举报
回复
to ChDw(米):
如果
getInstance()返回的对象为java.util.GregorianCalendar是Calendar的子类。
那么:
GregorianCalendar 是由 Calendar 派生出来的,也就是说,在写作 Calendar 时,GregorianCalendar 还没有的。那 Calendar.getInstance() 怎么可以生成得到一个子类来返回呢?
gularess 2002-03-20
  • 打赏
  • 举报
回复
定义一个句柄不代表实例化,察看Calenar源代码就可以看到实例化的是 new GregorianCalendar(zone, aLocale);
编程时间多了,自然会明白的。
ChDw 2002-03-20
  • 打赏
  • 举报
回复
getInstance()返回的对象为java.util.GregorianCalendar是Calendar的子类
ChDw 2002-03-20
  • 打赏
  • 举报
回复
Calendar是一个abstract Class,但是在程序中并没有进行显式进行实例化,程序只是通过getIntance返回,实际上返回的并不是真正的Calendar对象
所以并没有问题。
GFox 2002-03-20
  • 打赏
  • 举报
回复
Calendar 是一个abstract class ,又怎么可以实例化呢?
再说,要是Calendar 的子类的话,
calendar instanceof GregorianCalendar怎么会为真?
waterdragonfly 2002-03-20
  • 打赏
  • 举报
回复
getInstance() 返回的应该是Calendar 的子类。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧