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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李健_8 中级黑马   /  2012-10-5 09:56  /  2193 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李健_8 于 2012-10-5 16:02 编辑

张孝祥老师第12讲  枚举
package com.itcast.day1;
public abstract class WeekDay {
//构造方法 私有的 不允许人家new对象
private WeekDay(){}
   
//只允许几个变量  
//这些值不是普通的基本类型的值 而是对象类型的值
public final static WeekDay SUN=new WeekDay();
public final  static WeekDay MON=new WeekDay();

//方法
public  WeekDay nextDay(){
  if(this==SUN){
return MON;
  }else{
  return SUN;
  }
}
public String toString(){
  return this==SUN?"SUN":"MON";
}
}

public class EnumTest {
public static void main(String[] args){
  WeekDay weekDay=WeekDay.SUN ;
  System.out.println(weekDay.nextDay());
}
}
1.为什么 "public final  static WeekDay MON=new WeekDay(); " 要用final修饰   finally修饰静态变量表示数值不可改变 但是 在这里具体有什么用处  我把final去掉 也没发现有什么不妥  
2.是不是创建对象是通过构造来创建的 我以为只要new就可以了。。。
3  if(this==SUN)  sun不是对象吗 。。。为何可以这样用
4  "WeekDay weekDay=WeekDay.SUN"也是创建对象吗
5  可不可以用一句简单的话说明一下 ---------枚举





评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
楼主真的明白这些问题了么? 正想给你解决,发现问题标签“已解决”
回复 使用道具 举报
1.final修饰的静态变量表示一个常量,在这里MON被final修饰,表示MON为一个常量,意味着MON仅仅表示星期一,如果你去掉了,将MON=SUN那不也可以了?事实上星期一等于星期天吗?不等对吧、
2.在这里创建对象是通过构造函数来创建的、
3.this和SUN都是对象,即将两个对象判断是否相等,而==操作对象时是判断这两个对象的首地址是否相同,所以能这样用;equals方法在操作对象是判断对象中的内容是否相同、
4.这不是创建对象,这只是在使用SUN这个对象,将其赋值给另一个WeekDay类型的变量weekDay、
5.枚举就相当于一个有限常量的集合。

评分

参与人数 2技术分 +1 黑马币 +12 收起 理由
创出一片辉煌 + 1
李健_8 + 12 很给力!

查看全部评分

回复 使用道具 举报
牛杨 发表于 2012-10-5 11:27
楼主真的明白这些问题了么? 正想给你解决,发现问题标签“已解决”

                                点错            已改
回复 使用道具 举报
张榆 发表于 2012-10-5 11:29
1.final修饰的静态变量表示一个常量,在这里MON被final修饰,表示MON为一个常量,意味着MON仅仅表示星期一 ...

不过我感觉枚举和"创建一个类再用这个类作为数据类型使用 创建一个对象"有些相似  有说不出具体的不同
回复 使用道具 举报
李健_8 发表于 2012-10-5 11:59
不过我感觉枚举和"创建一个类再用这个类作为数据类型使用 创建一个对象"有些相似  有说不出具体的不同 ...

我觉得,枚举可以更方便的让这些变量依次循环,比如交通灯,红绿黄依次循环,还有星期,星期一到星期天,都是依次循环的,个人理解哈
回复 使用道具 举报
张榆 发表于 2012-10-5 12:03
我觉得,枚举可以更方便的让这些变量依次循环,比如交通灯,红绿黄依次循环,还有星期,星期一到星期天, ...

那些都是方法实现的 使用类生成对象后 调用方法 也可以啊{:3_46:}
回复 使用道具 举报
张榆 中级黑马 2012-10-5 12:19:55
8#
李健_8 发表于 2012-10-5 12:07
那些都是方法实现的 使用类生成对象后 调用方法 也可以啊

它的好处是我们说不出来的,只有在用的时候才能发现它的好,比其他稍微特殊的就是限定了范围,而且必须有一个抽象方法next什么的方法,这也算是它的独特之处吧,相信存在的即是合理的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马