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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Kelvinhu 中级黑马   /  2014-4-17 20:26  /  1159 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Kelvinhu 于 2014-4-17 20:59 编辑

getInstance:在java中,可以使用这种方式使用单例模式创建类的实例,所谓单例模式就是一个类有且只有一个实例,不像object ob=new object();的这种方式去实例化后去使用。也就是说getInstance就实例化某个类。

Calender这个类是抽象类。那抽象类不是不能被实例化吗?为什么还可以用:


Calendar calendar = Calendar.getInstance();


7 个回复

倒序浏览
这是父类引用指向子类对象  JAVA多态概念
回复 使用道具 举报
可能返回的是匿名内部类,也就是getInstance()函数内部可能是这个样子:return new Calendar(){/*这里实现了calendar中的抽象方法*/}
回复 使用道具 举报
本帖最后由 伍叶竹 于 2014-4-17 21:03 编辑

一点想法
抽象类不能创建实例对象,对抽象类的静态成员方法的调用直接用类名加方法名。这句话看来看去,就是类名.方法名的一个调用。。。
= =。

回复 使用道具 举报
ノtrack 发表于 2014-4-17 20:41
这是父类引用指向子类对象  JAVA多态概念

你觉得那行代码哪个是子类??
回复 使用道具 举报
一个类被实例化,是指创建了对象,一般有new这个关键字。你上面那行代码,不是实例化,只是用类名直接调用了静态方法。。。。。
回复 使用道具 举报
OK懂了= =结贴。。
回复 使用道具 举报
Ricky_Nick 发表于 2014-4-17 20:56
你觉得那行代码哪个是子类??

蹲在旁边想了下,除了2L答案不太对以外其他人答案都对。{:3_59:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马