枚举类

什么是枚举类?

一个类的对象有限而且固定,比如季节类,他只有4个实例,这种实例有限而且固定的类,被称为枚举类

枚举类是一种特殊的类,使用enum定义

使用enum定义的枚举类默认继承了java.lang.Enum抽象类,因此枚举类不能显示继承其他父类

Enum源码

public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable {

private final String name;
public final String name() {
    return name;
}
private final int ordinal;
protected Enum(String name, int ordinal) {
    this.name = name;
    this.ordinal = ordinal;
}
//重写Object类的方法
public String toString() {
    return name;
}
public final boolean equals(Object other) {
    return this==other;
}
public final int hashCode() {
    return super.hashCode();
}
protected final Object clone() throws CloneNotSupportedException {
    throw new CloneNotSupportedException();
}
protected final void finalize() { }

}

 

使用枚举类注意事项?枚举类在定义的时候省略了 final/abstract extends Enum

1定义枚举类不得使用extends     枚举类隐式继承Enum抽象类,枚举子类可以使用Enum抽象类的方法,因此不可在继承其他类

2枚举类不能做父类                     枚举类需要显示创建实例,因此实例必须给出抽象方法的重写。使用enum定义的枚举类默认会使用abstract/final修饰符,因此枚举类不能派生子类

(使用abstract/final修饰取决于枚举类中是否含有抽象方法)

3枚举类的构造器只能用private修饰

4枚举类的所有实例必须在枚举类的第一行显示列出,否则这个枚举类额永远都不能产生实例,实例用public static final 修饰

public final enum A extends Enum{

Spring,SUMMER,FALL,WINTER;

}

switch表达式可以使用枚举类

public void judge(A a){

switch(a){

case SPRING: break;

case SUMMER:break;

case FALL:break;

case WINTER:break;

}
}

枚举类的成员变量?方法?构造器?

枚举类的实例只能是枚举值,不是随意通过new来创建枚举类对象

枚举类可以有成员变量,但是枚举类应该设置成不可变类,因此推荐枚举类的成员变量都是用private final修饰

枚举类和普通类一样可以实现一个或多个接口

public enum Operation{

PLUS("+")//枚举实例PLUS ,成员变量+,为该枚举实例提供抽象方法的实现

{

public double eval(doublex,double y)

{

return x+y;

}

}

public  abstract double eval(double x,double y);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值