枚举可以有抽象方法吗?
枚举可以有抽象方法吗?如果是这样,有什么用,并给出一个场景来说明这种用法。
是的,但您可能更喜欢实现接口的枚举,请看这里。我认为它看起来好多了。这是抽象方法的示例:
public enum Animal {
CAT {
public String makeNoise() { return "MEOW!"; }
},
DOG {
public String makeNoise() { return "WOOF!"; }
};
public abstract String makeNoise();
}
是的,当且仅当所有枚举值都具有具有这些方法实现的自定义类体时,才能在声明中定义方法(即,没有具体的枚举值可能缺少实现)。abstract
enum
public enum Foo {
BAR {
public void frobnicate() {
// do BAR stuff
}
},
BAZ {
public void frobnicate() {
// do BAZ stuff
}
};
public abstract void frobnicate();
}