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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汤柳清 中级黑马   /  2014-2-10 19:56  /  1371 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看张老师的视频,感觉一个奇怪的问题,如下
  1. package cn.itcast.day1;

  2. import java.util.Date;

  3. public class EnumTest {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) throws Exception {
  8.                
  9.                 WeekDay1 weekDay = WeekDay1.MON;
  10.                 //System.out.println(weekDay.nextDay());
  11.                
  12.                 WeekDay weekDay2 = WeekDay.FRI;
  13.                 System.out.println(weekDay2);
  14.                 System.out.println(weekDay2.name());
  15.                 System.out.println(weekDay2.ordinal());       
  16.                 System.out.println(WeekDay.valueOf("SUN").toString());
  17.                 System.out.println(WeekDay.values().length);
  18.                
  19.                 //new Date(300){};//匿名内部类


  20.            TrafficLamp t = TrafficLamp.RED;
  21.           // System.out.println(t);
  22.           // System.out.println(t.nextLamp());
  23.         }

  24.          enum WeekDay{

  25.                 SUN(1),MON(),TUE,WED,THI,FRI,SAT;
  26.                 private WeekDay(){System.out.println("first");}
  27.                 private WeekDay(int day){System.out.println("second");}
  28.         }
  29.        
  30.          public enum TrafficLamp{
  31.                 RED(30){
  32.                         public  TrafficLamp nextLamp(){
  33.                                 return GREEN;
  34.                         }
  35.                 },
  36.                 GREEN(45){
  37.                         public  TrafficLamp nextLamp(){
  38.                                 return YELLOW;
  39.                         }                       
  40.                 },
  41.                 YELLOW(5){
  42.                         public  TrafficLamp nextLamp(){
  43.                                 return RED;
  44.                         }                       
  45.                 };
  46.                 public abstract TrafficLamp nextLamp();
  47.                 private int time;
  48.                 private TrafficLamp(int time){this.time = time;}
  49.         }
  50. }
复制代码
张老师说枚举也是一个特殊的类,上面的代码定义了2个枚举,而且全部是在EnumTest这个类“里面的”。难道这个2个枚举属于内部类吗?

并且,如果在一个类中,是不能把多个类都设置为public,上面有一个枚举的权限修饰符是public也不报错(上面的代码全部是正确的)。不知道为什么不报错?


评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
内部类就是外部类的一个属性,属性为什么不能加public修饰,
一个Java文件中只能有一个类能被public修饰,不是在一个类中

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报 1 0
酱爆 发表于 2014-2-10 23:36
内部类就是外部类的一个属性,属性为什么不能加public修饰,
一个Java文件中只能有一个类能被public修饰, ...

哦,不能当做类来看,作为属性就懂了。可为什么,说枚举是一个特殊的类呢?
回复 使用道具 举报 1 0
酱爆 发表于 2014-2-10 23:36
内部类就是外部类的一个属性,属性为什么不能加public修饰,
一个Java文件中只能有一个类能被public修饰, ...

上面的代码是在一个java文件中
回复 使用道具 举报
汤柳清 发表于 2014-2-10 23:41
哦,不能当做类来看,作为属性就懂了。可为什么,说枚举是一个特殊的类呢? ...

枚举是一个受限制的类,所以说它是一个特殊的类
回复 使用道具 举报
汤柳清 发表于 2014-2-10 23:43
上面的代码是在一个java文件中

是我没说明白,在一个java文件中只能定义一个被public修饰的类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马