【首先了解枚举, 枚举可以看做普通的类】
(1) 这个类的构造方法是private。
(2) 这个类的每个元素分别用一个 public final static修饰。
(3) 这个类的每个元素都是这个枚举类的实例对象
(4) 枚举看做普通的类,所以可以有若干个方法或者抽象方法。
【在枚举中,可以使用抽象方法么?】
可以。因为枚举中可以看做普通的类,可以定义抽象方法。
但是这个抽象方法需要枚举中的每个元素实现这个抽象方法。
枚举的每个元素都是这个枚举的实例对象,所以必须实现抽象方法。
- enum People
- {
- man {
- @Override
- public People getName() {
- return null;
- }
- },
- woman {
- @Override
- public People getName() {
- return null;
- }
- };
- public abstract People getName();
- }
复制代码
【枚举能继承类吗?】
如果这样定义一个枚举,让枚举继承String类,enum People extends String
编译器会报错,就是说你定义类已经继承了某个类。
由此可见,我们自己定义的枚举,已经继承了java.lang.Enum,并且Java不支持多重继承,
所以我们自己定义的枚举不能被继承,也不能继承类
【说说枚举和单例设计模式的区别】
1. 单例设计模式:
(1) 构造函数私有化
(2) 在本类中定义一个私有本类对象
(3) 开放静态方法,让外部可以获得这个本类对象
2. 枚举:
(1) 构造函数私有化(默认就有一个私有的空参数构造函数,不用自己定义)
(2) 成员变量就是这个枚举的实例对象,当只有一个成员变量的时候,这个枚举就可以当做单例来用。
(外部不需要new 这个枚举,直接可以调用)
|
|