黑马程序员技术交流社区

标题: 关于枚举求解 [打印本页]

作者: 翟宝海    时间: 2013-5-29 23:18
标题: 关于枚举求解
本帖最后由 翟宝海 于 2013-6-3 23:58 编辑

再看张老师的高新视频时,在第13个视频中,张老师简单创建了一个Weekday的枚举,代码如下:
  1. public class WeedDay
  2. {
  3.         private WeekDay() {}
  4.         public final static WeekDay SUN = new WeekDay();
  5.         public final static WeekDay MOD = new WeekDay();
  6.         public void nextDay()
  7.         {
  8.                 if(this == SUN)        
  9.                 {
  10.                         return MON;
  11.                 }
  12.                 else
  13.                 {
  14.                         return SUN;
  15.                 }
  16.         }
  17.         public String toString()
  18.         {
  19.                 return this == SUN?"SUN":"MON";
  20.         }
  21. }
复制代码
第十四个视频又创建了一个枚举,代码如下:
  1. public enum WeekDay
  2. {
  3.         SUN,MON,TUE,WED,TNI,FRI,SAT
  4. }
复制代码
我知道,第一个是自己写的枚举,需要自己定义各种方法,如toString;
        第二个是按照JAVA规定的范式写的枚举,自带了JAVA提供的各种便利方法;
        现在想问一下,enum 是个修饰符吗?它起什么样的作用?
                              toString是复写的Object中的toString方法,如果不覆盖,System.out.println()语句就会打印出这个对象的地址值;
                              这个toString我们没有调用,它是如何运行的?
作者: 小陈期待逆袭    时间: 2013-5-29 23:27
本帖最后由 小陈期待逆袭 于 2013-5-29 23:28 编辑

首先,enum和class的性质一样,只不过他是用来定义一个枚举。
第二个问题,我是这么认为的在我们调用打印的方法时,底层自动调用toString方法,如果没有覆盖父类(Object)toString方法,他会调用Object的toString方法,就是输出对象的地址值,当我们覆盖了toString方法,他就会调用对象所属类的toString方法了。




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