博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
枚举类
阅读量:6859 次
发布时间:2019-06-26

本文共 2440 字,大约阅读时间需要 8 分钟。

枚举类的引入

问题:

一些方法在运行时,它需要的数据类型不能是任意的,而必须是一定范围内的值
解决方案:
自定义一个类,限制别人随意创建对象

  • 代码如下:
/* * 问题: *      一些方法在运行时,它需要的数据类型不能是任意的,而必须是一定范围内的值 * 解决方案: *      自定义一个类,限制别人随意创建对象 * 代码如下: *//* 自定义一个性别类,限制着别人任意创建该类的对象 */class Gender{    String value;   //存储性别        //对外提供本类的对象    public static final Gender man = new Gender("男");        public static final Gender woman = new Gender("女");        //私有化Gender类,使外部不能直接创建该类对象    private Gender(String value){        this.value = value;    }}class Person{    String name;    Gender sex;        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Gender getSex() {        return sex;    }    public void setSex(Gender sex){        this.sex = sex;    }        @Override    public String toString() {        return "姓名:"+this.name +",性别:"+this.sex.value;    }        }public class Demo3 {    public static void main(String[] args) {        Person p = new Person();        p.name = "狗娃";        p.setSex(Gender.man);        System.out.println(p);    }}

枚举

  • 枚举类的应用场景:

一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,这时我们就可以是使用枚举类型进行限制

  • 例如:

一年四季、方向、性别

  • 格式:
enum 类名{        }
  • 注意的事项:
    1. 枚举类也是类,只不过是一个特殊的类
    2. 枚举值默认的修饰符是:public static final
    3. 枚举值其实就是当前枚举类的类型
    4. 枚举值必须是枚举类中的第一个语句
    5. 枚举类的构造方法默认是private,修饰符也 必须是private
    6. 枚举类允许出现抽象的方法,但是一旦出现了抽象的方法,那么枚举值就必须实现抽象的方法
  • 例如:
//定义一个方向enum Direction{    UP("上"),DOWN("下"),LEFT("左"),RIGHT("右");     //枚举值    String value;           //定义一个成员变量    public void print(){    //定义一个方法        System.out.println("value:"+value);    }    private Direction(String value){        this.value = value;    }}public class Enum {    public static void main(String[] args) {        Direction.UP.print();    }}

使用枚举类解决最开始的问题:

//性别的枚举类enum Gender1{        MAN("男"),WOMAN("女");            String value;        private Gender1(String value){        this.value = value;    }}class Person1{    String name;    private Gender1 sex;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Gender1 getSex() {        return sex;    }    public void setSex(Gender1 sex) {        this.sex = sex;    }    @Override    public String toString() {        return "姓名:"+this.name+",性别:"+this.sex.value;    }    }public class Demo4 {    public static void main(String[] args) {        Person1 p = new Person1();        p.name = "张三";        p.setSex(Gender1.MAN);        System.out.println(p);    }}

转载地址:http://ognyl.baihongyu.com/

你可能感兴趣的文章
计算二重定积分
查看>>
asp.net Web项目中c#读取域用户名的方法
查看>>
linux下安装apache及php
查看>>
重绘TabControl
查看>>
Python Decorator
查看>>
delphi debug release区别是什么?
查看>>
理解Docker容器的进程管理
查看>>
微信小程序独家秘笈之左滑删除
查看>>
Using Oracle's Parallel Execution Features
查看>>
[轉]发布时出现PHP has encountered a Stack overflow 解决办法
查看>>
substitute Simple JavaScript Template :
查看>>
9、如何清空流及缓存
查看>>
gvim汉化及配置
查看>>
ubuntu下JMF RTP不支持单播接收
查看>>
fastboot烧写命令
查看>>
深度测试与alpha混合(1)
查看>>
15幅非常有创意的影子摄影作品欣赏
查看>>
lightbox源码解析
查看>>
SQL Server 2008 VALUES
查看>>
[算法] 已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点
查看>>