黑马程序员技术交流社区

标题: Calendar是一个抽象类,为什么可以获取到Calendar的实例? [打印本页]

作者: 〃FelayMan。    时间: 2014-2-8 15:33
标题: Calendar是一个抽象类,为什么可以获取到Calendar的实例?
求大神讲讲
作者: 残梦共飞雪    时间: 2014-2-8 16:13
不能直接new。
获得对象是用类中的静态方法。

个人认为是调用子类实例化的。
作者: 残梦共飞雪    时间: 2014-2-8 16:19
残梦共飞雪 发表于 2014-2-8 16:13
不能直接new。
获得对象是用类中的静态方法。

查了下API。
直属子类有且只有一个:GregorianCalendar
此类提供大多数国家、地区使用的标准日历系统。
Calendar类的getInstance提供的参数可以满足子类构造。
作者: 〃FelayMan。    时间: 2014-2-8 17:36
残梦共飞雪 发表于 2014-2-8 16:13
不能直接new。
获得对象是用类中的静态方法。

谢谢哈,看了源码果然是通过子类实例化的
作者: zc332750    时间: 2014-2-10 09:55
//Calendar虽然是一个抽象类,但是可以通过其实现子类来获得子类对象,让子类对象完成Calendar所
//具有的有功能,使用Calendar对象调用时,实际上是使用子类的对象进行调用。抽象类的构造方法和
//普通方法只不过是为了子类扩展方便罢了
package er;
import java.io.*;
public class qer
{
    public static void main(String[] args)
    {
       Fun fun = Fun.getIntentce();
       System.out.println(fun.get());
    }
}
abstract class Fun
{
    protected Fun()
    {
       System.out.println("Fun");
    }
    public static Fun getIntentce()
    {
       return Son.getIntentce();
    }
    public int get()
    {
       return Son.getIntentce().get();
    }
}
class Son extends Fun
{
    private static Son s = new Son();
    private int age = 410;
    private Son()
    {
       System.out.println("son");
    }
    public static Fun getIntentce()
    {
       return s;
    }  
    public int get()
    {
       return age;
    }
}

作者: 张益达    时间: 2014-5-14 09:08
通过子类实例化  。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2