Que es enum

Puede aprender singleton antes de aprender la enumeración, lo que favorece la comprensión de la enumeración.

El predecesor de la enumeración antes de JDK1.5, se usó así antes de la enumeración

//枚举的前身
class Grade{
    private String name;
    //私有构造方法
    private Grade(){}
    private Grade (String name){
        this.name = name;
    }
    public static Grade A = new Grade("A");
    public static Grade B = new Grade("B");
    public static Grade C = new Grade("C");
    public static Grade D = new Grade("D");
    public static Grade E = new Grade("E");
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "Grage{" +
                "name='" + name + '\'' +
                '}';
    }
}
//对象类
class Student3 {
    private int age;
    private String name;
    private GradeEnum grade;//成绩A,B,C,D,E

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public GradeEnum getGrade() {
        return grade;
    }

    public void setGrade(GradeEnum grade) {
        this.grade = grade;
    }
    public Student3(){}
    public Student3(int age, String name, GradeEnum grade) {
        this.age = age;
        this.name = name;
        this.grade = grade;
    }

    @Override
    public String toString() {
        return "Student3{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", grade=" + grade +
                '}';
    }
}
//测试
class Test3{
    public static void main(String[] args) {
      //  Student3 s5 = new  Student3(16,"张三",Grade.E);
      //  System.out.println(s5);
    }
}

La enumeración solo apareció después de JDK1.5

//接口
interface En6{
    //抽象方法没有方法体
    public abstract void en6();
}

//1)定义枚举类要用关键字enum
enum GradeEnum implements En6{//实现接口
    /*
    2)所有枚举类都是Enum的子类
    3)枚举类的第一行上必须是枚举项,
     最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略。
    4)枚举每个都是静态常量,不允许其他修饰符修饰
    5)枚举类可以有构造方法,但必须是private的,它默认的也是private的。
     */
      A(){
          //7)枚举类也可以有抽象方法,但是枚举项必须重写该方法
          public  void en5(){
              System.out.println("枚举中的抽象方法");
          }
          //8)枚举类每个类都默认继承了Enum类,所以不能再继承其他类
          //但是可以实现接口,且重写其方法,并用枚举类的枚举项调用
          public void en6(){
              System.out.println("枚举实现接口,重写接口中的方法");
          }
    },B(){
        public  void en5(){
            System.out.println("枚举中的抽象方法");
        }
        public void en6(){
            System.out.println("枚举实现接口,重写接口中的方法");
        }
    };
      public void en4(){
          System.out.println("枚举中的普通方法");
      }

      public abstract void en5();
}

public class Student4 {

    public static void main(String[] args) {
     //6)枚举类可以有正常方法,且可以被调用执行
     // 被枚举项调用执行
       GradeEnum.A.en4();
       GradeEnum.A.en5();
       GradeEnum.A.en6();

    }
}

Supongo que te gusta

Origin blog.csdn.net/CV_Ming/article/details/111874976
Recomendado
Clasificación