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,定义静态变量还可以有抽象方法,但枚举类不能被继承的主要内容,如果未能解决你的问题,请参考以下文章