黑马程序员技术交流社区

标题: 关于枚举 [打印本页]

作者: 王凯路路    时间: 2014-8-22 18:54
标题: 关于枚举
枚举和单例设计模式的区别,枚举是否可以继承类?

作者: sadfgood    时间: 2014-8-22 19:13
枚举使用enum关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用public和internal。
枚举是值类型,隐式继承自System.Enum,不能手动修改。System.Enum本身是引用类型,继承自System.ValueType。
枚举都是隐式密封的,不允许作为基类派生子类。
枚举类型的枚举成员均为静态,且默认为Int32类型。
每个枚举成员均具有相关联的常数值。此值的类型就是枚举的底层数据类型。每个枚举成员的常数值必须在该枚举的底层数据类型的范围之内。如果没有明确指定底层数据类型则默认的数据类型是int类型。
枚举成员不能相同,但枚举的值可以相同。
枚举最后一个成员的逗号和大括号后面的分号可以省略

单列模式是广为流传的设计模式中的一种。本质上,单例模式是一个只允许创建一个实例,并提供对这个实例简单的访问途径的类。一般而言,单例模式在创建实例时 不允许传递任何参数-否则不同参数导致不同的实例创建,就会出现问题!(如果同一个实例可以被同参的不同请求所访问,那么工厂模式会更适合。)

这是个人用枚举实现一个简单的单列模式
public enum Elvis {

instance("wangfabo", 1);
private final int id;
private final String name;

Elvis(String n, int i) {
   id=i;
   name=n;
}

public void leaveTheBuilding() {
   System.out.println("name:"+name+" id:"+id);;
}
public Elvis getInstance(){
   return instance;
}
}
枚举是不可以被继承的.
希望以上对你有所帮助。
作者: liqiaohui    时间: 2014-8-22 19:37
需要学习  谢谢楼上
作者: 王凯路路    时间: 2014-8-23 08:44
sadfgood 发表于 2014-8-22 19:13
枚举使用enum关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符 ...

哥们, 谢了.很详细啊
作者: 逍遥客    时间: 2014-8-23 09:08
赞一下

作者: 大★宝    时间: 2014-8-23 09:32
看看!学习一下
作者: ﹑淼    时间: 2014-8-23 09:45
面试要考枚举吗
作者: iefegend    时间: 2014-8-23 10:00
很详细哦,,楼上,,当枚举中只有一个成员实例时,这时候也可以当作单例模式来用。:)
作者: 戏言丶    时间: 2014-8-23 11:22
2楼回答很详细,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2