枚举
使用场景
|--当需要表示固定几个值时,可以使用枚举来限制。比如:季节、星期、成绩等级。。。。
|--含义
|--本质就是一个特殊的类
|--继承enum类,所以不能再继承其他类,但是可以实现接口
|--默认的构造器是私有的,所以其他类不能继承枚举类
|--可以有抽象方法,但是枚举元素必须实现未实现的方法
|--每一个枚举元素就是一个对象
|--当元素只有一个的时候,其实就是一个单例
|--常用的api
|--values //获取所有的枚举元素
|--valueOf //名字--->枚举对象
|--name //名字
|--ordinal //枚举元素的位置(0开始)
public enum ScoreLevel {
A{
@Override
public void say() {
System.out.println("A等级");
}
},B{
@Override
public void say() {
System.out.println("B等级");
}
},C{
@Override
public void say() {
System.out.println("C等级");
}
},D{
@Override
public void say() {
System.out.println("D等级");
}
};
//特殊
//本质就是一个类,继承enum类
//枚举元素就是枚举类的实例(对象)
//不能再继承其他类,但是可以实现其他接口
//当元素个数只有一个的时候,其实也是单例设计模式
//默认的构造器都是私有的,所以其他类不能继承枚举类
//定义普通的方法(static | 非 static),
//可以有抽象方法,但是要使用匿名内部类
//常用方法
//。。
//对象级别(对象才能调用的)
public void printLevel() {
System.out.println(this);
}
public static void staticPrint() {
}
//可以使用抽象方法,但是要实现未实现的方法
public abstract void say();
}
public class ScoreInput {
public static void main(String[] args) {
//static final public
//ScoreLevel的对象
//inputScore(ScoreLevel.A);
//获取枚举类的父类
//class java.lang.Enum
//System.out.println(ScoreLevel.class.getSuperclass());
//ScoreLevel.A.printLevel();
//values() 获取枚举类中的所有元素
//ordinal() 枚举元素的位置
ScoreLevel [] scoreLevels= ScoreLevel.values();
for(ScoreLevel scoreLevel : scoreLevels) {
System.out.println("name="+scoreLevel.name()+",ordinal="+scoreLevel.ordinal());
}
System.out.println("-----------------valueof-----------------");
ScoreLevel AScoreLevel = ScoreLevel.valueOf("A");
AScoreLevel.say();
System.out.println(AScoreLevel.name());
}
public static void inputScore(ScoreLevel scoreLevel) {
}
}