黑马程序员技术交流社区

标题: 枚举类中出现抽象方法时为什么类不用抽象呢 [打印本页]

作者: 罗雪梅    时间: 2012-10-3 11:01
标题: 枚举类中出现抽象方法时为什么类不用抽象呢
本帖最后由 罗雪梅 于 2012-10-3 19:51 编辑

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

}

作者: 王中利    时间: 2012-10-3 11:23
抽象类就是没有具体对象的概念类,它必须被继承,类中的抽象方法必须被重写。抽象类不一定包含抽象方法,但是,如果一个类中包含了抽象方法,也就是abstract关键字修饰的方法,那么该类就必须声明为抽象类。
作为类方法修饰符abstract则声明了一种仅有方法头而没有具体的方法体和操作实现的方法。抽象方法的一个主要目的就是为所有子类定义一个统一的接口,至于方法体的怎么实现则是由当前类的不同子类在它们各自的类定义中完成的。
作者: 武庆东    时间: 2012-10-3 11:35
本帖最后由 武庆东 于 2012-10-3 13:45 编辑

重新整理


作者: 尤洋    时间: 2012-10-3 13:24
楼上的不要误导群众啊
其实这个问题很简单,之所以类中有抽象方法,却没有在类前申明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 19:51
尤洋 发表于 2012-10-3 13:24
楼上的不要误导群众啊
其实这个问题很简单,之所以类中有抽象方法,却没有在类前申明abstract
是因为Enum类 ...

奥,这样讲我就理解了,谢谢啦




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