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

© 学习代码 中级黑马   /  2014-3-28 14:36  /  1679 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;
  2. import java.text.*;

  3. class CalendarDemo
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 Calendar c= Calendar.getInstance();//这里有点小迷糊。帮忙解释一下,谢谢
  8.                 //sop(c);                                                        //是不是类中的静态方法,不管类是不是抽象的都可以用类名调用呢?
  9.                 sop(c.get(Calendar.YEAR));
  10.         }


  11. public static void sop(Object obj)
  12.         {
  13.                 System.out.println(obj);
  14.         }
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

倒序浏览
类中的方法引用确实可以类名引用,但是静态类中只能引用静态方法。
Calendar c= Calendar.getInstance();
这句话就是创建Calendar 对象c而Calendar.getInstance()则是调用Calendar里面的getInstance方法。

    具体解释就是Calendar类是个抽象类,因此本身不能被实例化,然而在却创建了Calendar 的对象,但并不是抽象类可以创建对象。这个对象并不是Calendar 自身实例,而是其子类实例,这是在getInstance方法内部其实是实例化了GregorianCalendar 对象并返回了。
    这里还反映了一种设计模式,很多模式里都用到getInstance方法来生成一对象,类中static 变量和方法可通过 类名.××访问

希望可帮到你

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
只要是静态方法,都可以直接使用类名直接调用该静态方法
回复 使用道具 举报
本帖最后由 宋超2356 于 2014-3-28 18:52 编辑
  1. import java.util.*;
  2. import java.text.*;

  3. class CalendarDemo
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 Calendar c= Calendar.getInstance();// Calendar是抽象的,这里抽象类是不可能有实例的,这里是通过调用子类                GregorianCalendar的方法getInstance()创建的子类实例,并c指向其
  8.                 //sop(c);                          //静态方法调用方式就是直接的 类名.方法名()不用也无法创建实例                     
  9.                 sop(c.get(Calendar.YEAR));
  10.         }


  11. public static void sop(Object obj)
  12.         {
  13.                 System.out.println(obj);
  14.         }
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马