java中的实现接口和含有抽象方法的枚举类
来源:互联网 发布:java 数组去重 编辑:程序博客网 时间:2024/05/19 00:11
含有抽象方法的枚举类型:
public enum Operator
{
/*PLUS , MINUS , TIMES , DIVIDE;
double eval(double x , double y){
switch(this){
case PLUS: return x+y;
case MINUS:return x-y;
case TIMES:return x*y;
case DIVIDE:return x/y;
default:return 0;//java中如果省略则会编译不通过
}
}*/
PLUS {
public double eval(double x,double y){
return x + y;
}
} ,
MINUS {
public double eval(double x , double y){
return x - y;
}
} ,
TIMES {
public double eval(double x, double y){
return x*y;
}
} ,
DIVIDE {
public double eval(double x, double y){
return x / y;
}
};
//为枚举类定义一个抽血方法,这个抽象方法由不同的
//枚举值提供不同的实现
/**
*两点说明:
*上面枚举值的后面的大括号实际上是一个 匿名类所以编译文件
*后你会看到5个.class文件,其中一个是Operator.class另外四个是匿名类的class文件]
*
*个人以为这种实现方式,只有在每一个枚举值拥有不同的操作时才比较合适
*否则推荐上一种实现方式
*/
public abstract double eval(double x, double y);
public static void main(String[] args)
{
Operator a = Enum.valueOf(Operator.class , "DIVIDE");
System.out.println(a.eval(3,2));
System.out.println(Operator.PLUS.eval(3,34));
System.out.println(Operator.MINUS.eval(345,2));
}
}
实现接口的枚举类
interface GenderDesc
{
void info();
}
enum Gender implements GenderDesc
{
//MALE("男"),FEMALE("女");
//上面两句等同于下面两句
/**
*public static final Gender MALE = new Gender("男");
*public static fianl Gender FEMALE = new Gender("女");
*/
//public String name;
//private Gender(String name){//必须是私有的构造器
// this.name = name;
//}
//s实现接口的方法,这样实现的接口与普通类几乎一样
//但是每个枚举值调用这个方法表现出一样的行为
/*public void info(){
System.out.println("这是一个用于定义性别属性的枚举类");
}
*/
//如果要想让不同的枚举值具有不同的行为方式可以改写成如下
//这种方式其实不是直接创建Gender枚举类的实例,而是相当
//于创建Gender的匿名子类的实例
//编译程序后会看到Gender$1.class 和 Gende$2.class
//这两个文件就是匿名子类的.class文件
//枚举值一定要在枚举类体的非注释代码开头列出来,否则会出现错误。(我用的是jdk1.7,经试验后得此结论)
MALE("男") {//花括号部分实际上是一个类体的部分,一个匿名类
public void info(){
System.out.println("这个枚举值代表男性");
}
} , //此处的逗号不能少,因为这里是列出枚举值
FEMALE("女") {
public void info(){
System.out.println("这个枚举值代表女性");
}
} ; //枚举结束,加分号!
public String name;
private Gender(String name){//必须是私有的构造器
this.name = name;
}
}
public class TestGender
{
public static void main(String[] args){
//通过enum的静态方法vallueof()方法获取指定枚举类型的枚举值
Gender g = Enum.valueOf(Gender.class , "FEMALE");
//g.name = "女";
//System.out.println(g + "代表" + g.name);
g.info();
}
}
- java中的实现接口和含有抽象方法的枚举类
- 关于抽象类和接口中含有相同方法的实现的一点思考
- java接口和抽象类的特殊实现方法
- 枚举实现含有接口
- 枚举中含有抽象方法
- Java 抽象类,抽象方法和接口
- Java抽象类和抽象方法、接口
- 4.3抽象类abstract和接口interface定义implements实现接口中的抽象方法
- 接口和抽象类中的方法和变量的类型
- JAVA中的继承和实现的区别以及接口和抽象类的区别
- Java 带有抽象方法的枚举类
- Java基础——Java的抽象机制,抽象方法抽象类和接口
- java中的抽象类实现接口的问题
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- 抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- Java抽象(方法,类)和Java的接口
- Java中equals()与hashCode()方法完全解惑
- 2013多校第一场 - from lanshui_Yang
- 数据结构篇deque
- ActiveReports 报表应用教程 (13)---嵌入第三方控件
- Manifold Learning
- java中的实现接口和含有抽象方法的枚举类
- ActiveReports 报表应用教程 (14)---数据可视化
- 常用的PL/SQL开发原则 by dbsanke
- ActiveReports 报表应用教程 (15)---报表换肤
- Oracle创建dblink报错:ORA-01017、ORA-02063解决
- 大连东软实习报告
- ActiveReports 报表应用教程 (16)---报表导出
- 嵌入式系统用户接口设计之裸机界面开发(三)
- 基于S3C2440的Linux-3.6.6移植——sysfs文件系统的IIC应用