zoukankan      html  css  js  c++  java
  • 【Java】枚举

    枚举

    枚举:Enum子类,final修饰 自jdk5.0

    常用方法:
    		values(); 获取枚举类内的所有枚举值,返回当前枚举类类型的数组
    		name(); 获取枚举值(枚举类的对象)的名字
    		ordinal();获取枚举值的序号
    枚举语法:
    	①在最最后的枚举值后加分号,然后定义属性、方法、构造方法
    	②枚举的构造方法,必须为私有,默认也是私有
    	③枚举内的抽象方法,该方法必须由每个枚举值来实现(可用内部类实现)
    

    1).创建枚举类

    ①:是个类,并且这个类的对象是构造好的,不允许用户构造该类的新对象
    	常用方法:
    		values(); 获取枚举类内的所有枚举值,返回当前枚举类类型的数组
    		name(); 获取枚举值(枚举类的对象)的名字
    		ordinal();获取枚举值的序号
    	
    	用法:
    //enum 继承自Enum
    enum Season { //创建枚举类Season
    			SPRING , SUMMER , AUTUMN ,WINTER
    }
    main: 	Season s = Season.SUMMER;
    		System.out.println(s.name());//打印s对象的名称
    		System.out.println(s.ordinal());//打印s对象所在的序号
    		//遍历枚举类内的枚举值
    		Season[] arrSeason = Season.values();
    		for(Season ss : arrSeason) {
    			System.out.println(ss.name());
    		}
    

    2).枚举类的构造方法

    ②:是个特殊的类,是Enum的子类,它所有的构造方法是私有的(private,不能被子类继承的特性),可以有属性,一旦有有参构造,则需要其内部的枚举值(枚举对象)也需要构造
    	
    用法:
    //enum 继承自Enum
    enum Season {
    	SPRING("春季", 1, 3),
    	SUMMER("夏季", 4, 6),
    	AUTUMN("秋季", 7, 9),
    	WINTER("冬季", 10, 12); //构造后,最后一个对象需要有“;”
    	
    	String name;
    	private int startMonth;
    	private int endMonth;
    	//省略getters/setters
    	Season(String name, int startMonth, int endMonth) {//构造方法,默认private
    		this.name= name;
    		this.startMonth = startMonth;
    		this.endMonth = endMonth;
    	}
    }
    main():	Season s = Season.SUMMER;
    		System.out.println(s.getName() + “开始月份是” + s.getStartMonth());
    

    3).枚举类的抽象方法

    ③:枚举类的内部可以有抽象方法。枚举类的本身是被final修饰的,不能被继承,故不存在子类实现其抽象方法。
    所以其抽象方法是供内部的枚举值(枚举对象)实现的
    	
    用法:
    	//enum 继承自Enum
    enum Season {
    	SPRING("春季", 1, 3) {
    		@Override  //覆盖抽象方法
    		public void describe() {
    			System.out.println("春燕衔春泥");
    		}
    	},
    	SUMMER("夏季", 4, 6) {
    		@Override //覆盖抽象方法
    		public void describe() {
    			System.out.println("夏天很炎热");
    		}
    	},
    	AUTUMN("秋季", 7, 9) {
    		@Override //覆盖抽象方法
    		public void describe() {
    			System.out.println("秋天落叶黄");
    		}
    	},
    	WINTER("冬季", 10, 12) {
    		@Override //覆盖抽象方法
    		public void describe() {
    			System.out.println("大雪深数尺");
    		}
    	};
    	
    	String name;
    	private int startMonth;
    	private int endMonth;
    	//省略getters/setters
    	Season(String name, int startMonth, int endMonth) {//构造方法,默认private
    		this.name= name;
    		this.startMonth = startMonth;
    		this.endMonth = endMonth;
    	}
    	
    	public abstract void describe();//一个方法实现描述
    }
    main():	Season s = Season.SUMMER;
    		s.describe ();
    
  • 相关阅读:
    JavaScript 核心学习——继承
    吴裕雄--天生自然 PHP开发学习:PhpStorm的配置与安装
    吴裕雄--天生自然 HADOOP大数据分布式处理:安装WinSCP
    吴裕雄--天生自然 HADOOP大数据分布式处理:安装XShell
    云栖专辑 | 阿里开发者们的第14个感悟:技术拓宽价值边界
    玩转大数据系列之四:搜索服务
    RocketMQ源码分析之RocketMQ事务消息实现原下篇(事务提交或回滚)
    RocketMQ源码分析之RocketMQ事务消息实现原理中篇----事务消息状态回查
    RocketMQ源码分析之RocketMQ事务消息实现原理上篇(二阶段提交)
    RocketMQ源码分析之从官方示例窥探:RocketMQ事务消息实现基本思想
  • 原文地址:https://www.cnblogs.com/jwnming/p/13634040.html
Copyright © 2011-2022 走看看