黑马程序员技术交流社区
标题:
关于抽象类里面的静态方法问题
[打印本页]
作者:
学习代码
时间:
2014-3-28 14:36
标题:
关于抽象类里面的静态方法问题
import java.util.*;
import java.text.*;
class CalendarDemo
{
public static void main(String[] args)
{
Calendar c= Calendar.getInstance();//这里有点小迷糊。帮忙解释一下,谢谢
//sop(c); //是不是类中的静态方法,不管类是不是抽象的都可以用类名调用呢?
sop(c.get(Calendar.YEAR));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
作者:
苏伯亚
时间:
2014-3-28 14:55
类中的方法引用确实可以类名引用,但是静态类中只能引用静态方法。
Calendar c= Calendar.getInstance();
这句话就是创建Calendar 对象c而Calendar.getInstance()则是调用Calendar里面的getInstance方法。
具体解释就是Calendar类是个抽象类,因此本身不能被实例化,然而在却创建了Calendar 的对象,但并不是抽象类可以创建对象。这个对象并不是Calendar 自身实例,而是其子类实例,这是在getInstance方法内部其实是实例化了GregorianCalendar 对象并返回了。
这里还反映了一种设计模式,很多模式里都用到getInstance方法来生成一对象,类中static 变量和方法可通过 类名.××访问
希望可帮到你
作者:
H-Deka
时间:
2014-3-28 15:15
只要是静态方法,都可以直接使用类名直接调用该静态方法
作者:
宋超2356
时间:
2014-3-28 18:50
本帖最后由 宋超2356 于 2014-3-28 18:52 编辑
import java.util.*;
import java.text.*;
class CalendarDemo
{
public static void main(String[] args)
{
Calendar c= Calendar.getInstance();// Calendar是抽象的,这里抽象类是不可能有实例的,这里是通过调用子类 GregorianCalendar的方法getInstance()创建的子类实例,并c指向其
//sop(c); //静态方法调用方式就是直接的 类名.方法名()不用也无法创建实例
sop(c.get(Calendar.YEAR));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2