A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张子凯 中级黑马   /  2013-4-9 18:12  /  1507 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张子凯 于 2013-4-10 08:59 编辑
  1. /*
  2. 练习:

  3. 2,获取昨天的现在这个时刻。
  4.         c.add(Calendar.DAY_OF_MONTH,-1);
  5. */
  6. import java.util.*;
  7. import static java.lang.System.*;
  8. class CalendarTest2
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 Calendar c = Calendar.getInstance();//c是具体对象吧?
  13.                 c.add(Calendar.DAY_OF_MONTH,-1);
  14.                 printCalendar(c);
  15.         }
  16.         public static void printCalendar(Calendar c)
  17.         {
  18.                 String[] mons = {"1月","2月","3月","4月",
  19.                                         "5月","6月","7月","8月",
  20.                                         "9月","10月","11月","12月"};
  21.                 String[] weeks = {"","星期一","星期一","星期二","星期三","星期四","星期五","星期六"};

  22.                 int index = c.get(Calendar.MONTH);
  23.                
  24.                 //输出昨天此时时间。
  25.                 out.print("昨天此时是:"+c.get(c.YEAR)+"年");
  26.                 out.print(mons[index]+c.get(Calendar.DAY_OF_MONTH)+"日");
  27.                 out.print(c.get(c.HOUR_OF_DAY)+"时"+c.get(c.MINUTE)+"分");
  28.                 out.println(c.get(c.SECOND)+"秒");
  29.         }
  30. }
复制代码
代码功能是实现输出昨天此时刻的时间,现有问题如下:
Calendar c = Calendar.getInstance();
1,c是具体对象吧?
2,抽象函数是不能创建对象的,所以getInstance()函数一定是其他子类创建的对象,这算多态吗?
3,我看了一下源代码,getInstance()调用了一个createCalendar()的方法创建的对象,但是这个createCalendar()方法在哪儿能找到?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
怎么会找不到,在同一个文件里面,eclipse里面,配置好查看源码后 选中函数 f3就行了
private static Calendar createCalendar(TimeZone zone,
                                           Locale aLocale)
    {
        Calendar cal = null;

        String caltype = aLocale.getUnicodeLocaleType("ca");
        if (caltype == null) {
            // Calendar type is not specified.
            // If the specified locale is a Thai locale,
            // returns a BuddhistCalendar instance.
            if ("th".equals(aLocale.getLanguage())
                    && ("TH".equals(aLocale.getCountry()))) {
                cal = new BuddhistCalendar(zone, aLocale);
            } else {
                cal = new GregorianCalendar(zone, aLocale);
            }
        } else if (caltype.equals("japanese")) {
            cal = new JapaneseImperialCalendar(zone, aLocale);
        } else if (caltype.equals("buddhist")) {
            cal = new BuddhistCalendar(zone, aLocale);
        } else {
            // Unsupported calendar type.
            // Use Gregorian calendar as a fallback.
            cal = new GregorianCalendar(zone, aLocale);
        }

        return cal;
    }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
蓝色骨头 发表于 2013-4-9 18:21
怎么会找不到,在同一个文件里面,eclipse里面,配置好查看源码后 选中函数 f3就行了
private static Cale ...

谢谢了,不过貌似还有问题没回答完呢。。。
回复 使用道具 举报
张子凯 发表于 2013-4-9 21:07
谢谢了,不过貌似还有问题没回答完呢。。。

1 c是引用变量,指向堆里的一个Calendar 对象
2 抽象函数是不能创建对象的,所以getInstance()函数一定是其他子类创建的对象,这算多态吗?
  应该是抽象类不能创建对象,Calendar 不是抽象类
多态是指父类类型的引用指向子类对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马