为了账号安全,请及时绑定邮箱和手机立即绑定

Calendar是一个抽象类,为什么还能通过getInstance()获得实例化的对象

抽象类不是不可以实例化的么?

正在回答

3 回答

首先,抽象类可以有具体的实现方法。其次,看下源码:

if ("th".equals(aLocale.getLanguage())
       && ("TH".equals(aLocale.getCountry()))) {        return new sun.util.BuddhistCalendar(zone, aLocale);
   } else if ("JP".equals(aLocale.getVariant())
          && "JP".equals(aLocale.getCountry())
          && "ja".equals(aLocale.getLanguage())) {        return new JapaneseImperialCalendar(zone, aLocale);
   }        

   // else create the default calendar        return new GregorianCalendar(zone, aLocale);

该方法内部最终返回的是具体的实现类,也就是子类,而不是你所理解的Calendar本身实例化的类。

2016年10月09日回答

 

3 评论

 

编辑




0 回复 有任何疑惑可以回复我~

静态抽象类

0 回复 有任何疑惑可以回复我~

getInstance()方法中返回的是createCalendar()方法,在这个createCalendar()方法中通过多态new了Calendar的子类,创建了对象。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Calendar是一个抽象类,为什么还能通过getInstance()获得实例化的对象

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信