java的枚举类enum,定义静态变量还可以有抽象方法,但枚举类不能被继承

Posted yicarro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的枚举类enum,定义静态变量还可以有抽象方法,但枚举类不能被继承相关的知识,希望对你有一定的参考价值。

借鉴https://blog.csdn.net/qq_31655965/article/details/55049192

在此解释枚举类不能被继承的原因:它已经继承过父类Enum类了,且它的父类实现了serializable接口,即所有enum类都实现了序列化

 而enum类也不可以被继承,原因如下:

写法是:public enum 枚举类类名{变量列表用逗号隔开,最后一个变量后用分号结束; 可用函数列表  }

其实 枚举类本身就是  public final class 枚举类类名{变量列表的类型就是该类类型且也用到了final关键字};并且枚举类自带value(),valueof()函数和static{}静态代码块的声明/定义。

故变量列表中的变量可以写成三种方式:1.变量名。//相当于用枚举类类型定义一个静态变量

                  2.变量名(变量名对应值)。//用枚举类类型定义变量,但该枚举类有提供有私有参构造方法和私有变量用作参数,参数的值就是变量名对应的值

                  3.变量名(变量名对应值){静态代码块}//除2以外,该枚举类还定义了抽象方法,变量名的后的代码块相当于是实现抽象方法的匿名内部类。写法如同:变量类型 变量名 =new 枚举类类名(参数){@Override

                        public 枚举类类型 抽象类类名() {
                                return 变量名; }

                       }


以上是关于java的枚举类enum,定义静态变量还可以有抽象方法,但枚举类不能被继承的主要内容,如果未能解决你的问题,请参考以下文章

Java Review (十七面向对象----枚举类)

java成神之——enum枚举操作

Java 枚举类型必须定义在静态类中

Java基础之细说枚举

枚举基类Enum详解

枚举类