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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 罗雪梅 于 2012-10-3 19:51 编辑

public enum Weekend
{
      //元素列表
      //我就写一个例子,其它的元素就不写了,大家能明白我的问题就行,这是weekend实例因为有抽象方法所以不能直接实例化,分通过子类实例化,所以就在本类中用匿名内部类的方式来创建
       SUN{
                     public Weekend nextDay(){return MON;}
             },MON,TUR,WED,THR,FIR,SAT;
      //抽象方法,为什么类不抽象呢
       public abstract nextDay();

}

4 个回复

正序浏览
尤洋 发表于 2012-10-3 13:24
楼上的不要误导群众啊
其实这个问题很简单,之所以类中有抽象方法,却没有在类前申明abstract
是因为Enum类 ...

奥,这样讲我就理解了,谢谢啦
回复 使用道具 举报
楼上的不要误导群众啊
其实这个问题很简单,之所以类中有抽象方法,却没有在类前申明abstract
是因为Enum类本身默认就是抽象的。无论里面有没有抽象方法 Enum都是抽象类
在API文档里类 Enum<E extends Enum<E>>的描述:
public abstract class Enum<E extends Enum<E>>extends Objectimplements Comparable<E>, Serializable
回复 使用道具 举报
本帖最后由 武庆东 于 2012-10-3 13:45 编辑

重新整理

回复 使用道具 举报
抽象类就是没有具体对象的概念类,它必须被继承,类中的抽象方法必须被重写。抽象类不一定包含抽象方法,但是,如果一个类中包含了抽象方法,也就是abstract关键字修饰的方法,那么该类就必须声明为抽象类。
作为类方法修饰符abstract则声明了一种仅有方法头而没有具体的方法体和操作实现的方法。抽象方法的一个主要目的就是为所有子类定义一个统一的接口,至于方法体的怎么实现则是由当前类的不同子类在它们各自的类定义中完成的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马