枚举类实现接口【精】

枚举类实现接口【精】

一、前言

枚举类和普通类实现接口一样吗?

二、枚举类实现接口

枚举类实现接口与普通类实现接口是一样的,都需要实现接口的抽象方法。

但是!!

枚举类 实现接口的同一个抽象方法,该抽象方法在枚举类不同对象实现不同的行为。如何实现那?

简单

只要在枚举类的每个对象都重写该方法就可以做到不同对象实现该抽象方法不同的行为。

三、枚举类实现接口实例

  • 先定义一个接口
/**
 * 定义一个接口
 */
interface Info {
    void describe();
}
  • 创建一个枚举类实现该接口
/**
 *  枚举类实现接口
 */
public enum EnumImplement implements Info{  }
  • 重写接口的方法
/**
 *  枚举类实现接口重写抽象方法
 */
public enum EnumImplement implements Info{

    /**
     *  需求:实现接口,在不同的对象实现抽象方法不同的行为。
     *  实现方法:将接口的抽象方法在每个对象中重写实现不同的行为
     */
    SPRING("春天"){
        @Override
        public void describe() {
            System.out.println("春江水阿暖鸭先知");
        }
    },
    SUMMER("夏天"){
        @Override
        public void describe() {
            System.out.println("我爱山中夏,空冥花雨下。");
        }
    },
    AUTUMN("秋天"){
        @Override
        public void describe() {
            System.out.println("停车坐爱枫林晚,霜叶红于二月花。");
        }
    },
    WINTER("冬天"){
        @Override
        public void describe() {
            System.out.println("北国风光,千里冰封,万里雪飘。");
        }
    };
  •  枚举类实现接口完整实例

/**
 * 定义接口
 */
interface Info {
    void describe();
}

/**
 *  枚举类实现接口的抽象方法
 */
public enum EnumImplement implements Info{

    /**
     *  需求:接口的抽象方法,在不同的对象实现不同的行为。
     *  实现方法:将接口的抽象方法在每个对象中重写实现不同的行为
     */
    SPRING("春天"){
        @Override
        public void describe() {
            System.out.println("春江水阿暖鸭先知");
        }
    },
    SUMMER("夏天"){
        @Override
        public void describe() {
            System.out.println("我爱山中夏,空冥花雨下。");
        }
    },
    AUTUMN("秋天"){
        @Override
        public void describe() {
            System.out.println("停车坐爱枫林晚,霜叶红于二月花。");
        }
    },
    WINTER("冬天"){
        @Override
        public void describe() {
            System.out.println("北国风光,千里冰封,万里雪飘。");
        }
    };

    //申明 EnumTest 对象的属性
    final String name;

    //提供有参构造器
    EnumImplement(String name) {
        this.name = name;
    }

    // 获取类对象属性
    public String getName() {
        return name;
    }
}
  •  定义测试类,获取枚举类对象和对象属性
public class App {
    public static void main(String[] args) {

        //获取 EnumImplement 所有对象
        EnumImplement[] values = EnumImplement.values();
        for (EnumImplement v : values) {
            //获取对象属性
            System.out.println(v.getName());
            v.describe();
        }
    }
}
  • 获取枚举类对象及属性结果
春天
春江水阿暖鸭先知
夏天
我爱山中夏,空冥花雨下。
秋天
停车坐爱枫林晚,霜叶红于二月花。
冬天
北国风光,千里冰封,万里雪飘。
发布了316 篇原创文章 · 获赞 117 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/104898390