黑马程序员技术交流社区

标题: java高新技术-枚举与枚举抽象方法 枚举中内部类问题? [打印本页]

作者: 黑马杨晨    时间: 2012-9-26 11:55
标题: java高新技术-枚举与枚举抽象方法 枚举中内部类问题?
public class EnumTest
{
public static void main(String[] args)
{
}

public enum TrafficLamp                                 //枚举类  默认的是  抽象类吗?
{
  RED {                                                                        
   public TrafficLamp nextLamp() {
    return null;
   }
  },GREEN {
   public TrafficLamp nextLamp() {
    return null;
   }
  },YELLOW {
   public TrafficLamp nextLamp() {
    return null;
   }
  };
  public abstract TrafficLamp nextLamp();
}

}

谁能解释下上面红色代码块为什么这样定义?

枚举类  默认的是  抽象类吗?

RDE为什么可以这样实现内部类?

下面这种情况和上面不是一样的吗?为什么就报错呢?

abstract class AbsDemo
{
new AbsDemo()
{
  void show()
  {
   System.out.println("show run");
  }
}.show();
abstract void show();
}







作者: 彭润生    时间: 2012-9-26 12:11
abstract class AbsDemo
{
         AbsDemo ad =  new AbsDemo(){//这样就可以了吧,你是模拟那个枚举,枚举也要有枚举的常量,那个ad就是的。我也不是十分的了解,可以到网上查查看看。
    void show()
   {
    System.out.println("show run");
   }
};
abstract void show();
}

作者: 黑马杨晨    时间: 2012-9-26 13:01
十万火急      
作者: 罗磊    时间: 2012-9-26 13:24
public class EnumTest
{
public static void main(String[] args)
{
}

public enum TrafficLamp                                 //枚举类  默认的是  抽象类吗?//按照老师说的!带抽象方法的类,一定是抽象类!好像可以说明这个类是抽象类!
{
  RED {                                                                        
   public TrafficLamp nextLamp() {//这里是定义了对象,并实现了抽象方法!
    return null;
   }
  },GREEN {
   public TrafficLamp nextLamp() {
    return null;
   }
  },YELLOW {
   public TrafficLamp nextLamp() {
    return null;
   }
  };
  public abstract TrafficLamp nextLamp();
}

}

谁能解释下上面红色代码块为什么这样定义?

枚举类  默认的是  抽象类吗?

RDE为什么可以这样实现内部类?

下面这种情况和上面不是一样的吗?为什么就报错呢?

abstract class AbsDemo
{
new AbsDemo()
{
  void show()
  {
   System.out.println("show run");
  }
}.show(); //对应这个问题!我觉得 应该把.show()去掉!才可和枚举具有可比性!
abstract void show();
}





作者: 黑马杨晨    时间: 2012-9-26 13:33
罗磊 发表于 2012-9-26 13:24
public class EnumTest
{
public static void main(String[] args)
  1. abstract class AbsDemo
  2. {
  3. new AbsDemo()
  4. {
  5.    void show()
  6.    {
  7.     System.out.println("show run");
  8.    }
  9. }.show();
  10. abstract void show();
  11. }
复制代码
枚举对象可以实现自己抽象类的匿名对象,普通的抽象类怎么不可以呢?比如这段代码编译时就是错误的!
作者: 黑马杨晨    时间: 2012-9-26 14:44
{:soso_e154:}此题不会,心情郁闷,茶不思饭不想!
作者: 黑马杨晨    时间: 2012-9-26 16:23
{:soso_e123:}此题不会,心情郁闷,茶不思饭不想!{:soso_e123:}




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