抽象类不是不可以实例化的么?
首先,抽象类可以有具体的实现方法。其次,看下源码:
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 评论
编辑
静态抽象类
getInstance()方法中返回的是createCalendar()方法,在这个createCalendar()方法中通过多态new了Calendar的子类,创建了对象。