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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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();
}






6 个回复

倒序浏览
abstract class AbsDemo
{
         AbsDemo ad =  new AbsDemo(){//这样就可以了吧,你是模拟那个枚举,枚举也要有枚举的常量,那个ad就是的。我也不是十分的了解,可以到网上查查看看。
    void show()
   {
    System.out.println("show run");
   }
};
abstract void show();
}
回复 使用道具 举报
十万火急      
回复 使用道具 举报
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: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. }
复制代码
枚举对象可以实现自己抽象类的匿名对象,普通的抽象类怎么不可以呢?比如这段代码编译时就是错误的!
回复 使用道具 举报
{:soso_e154:}此题不会,心情郁闷,茶不思饭不想!
回复 使用道具 举报
{:soso_e123:}此题不会,心情郁闷,茶不思饭不想!{:soso_e123:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马