A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王凯路路 中级黑马   /  2014-8-22 18:54  /  1176 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

枚举和单例设计模式的区别,枚举是否可以继承类?

8 个回复

倒序浏览
枚举使用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;
}
}
枚举是不可以被继承的.
希望以上对你有所帮助。
回复 使用道具 举报
需要学习  谢谢楼上
回复 使用道具 举报
sadfgood 发表于 2014-8-22 19:13
枚举使用enum关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符 ...

哥们, 谢了.很详细啊
回复 使用道具 举报
赞一下
回复 使用道具 举报
看看!学习一下
回复 使用道具 举报
﹑淼 中级黑马 2014-8-23 09:45:38
7#
面试要考枚举吗
回复 使用道具 举报
很详细哦,,楼上,,当枚举中只有一个成员实例时,这时候也可以当作单例模式来用。:)
回复 使用道具 举报
2楼回答很详细,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马