「java枚举抽象方法」枚举类是抽象类吗

博主:adminadmin 2022-12-14 07:57:06 58

本篇文章给大家谈谈java枚举抽象方法,以及枚举类是抽象类吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java枚举问题

package com.ljq.test;

/**

* 枚举用法详解

*

* @author jiqinlin

*

*/

public class TestEnum {

/**

* 普通枚举

*

* @author jiqinlin

*

*/

public enum ColorEnum {

red, green, yellow, blue;

}

/**

* 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法

*

* @author jiqinlin

*

*/

public enum SeasonEnum {

//注:枚举写在最前面,否则编译出错

spring, summer, autumn, winter;

private final static String position = "test";

public static SeasonEnum getSeason() {

if ("test".equals(position))

return spring;

else

return winter;

}

}

/**

* 性别

*

* 实现带有构造器的枚举

*

* @author jiqinlin

*

*/

public enum Gender{

//通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错

//赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错

MAN("MAN"), WOMEN("WOMEN");

private final String value;

//构造器默认也只能是private, 从而保证构造函数只能在内部使用

Gender(String value) {

this.value = value;

}

public String getValue() {

return value;

}

}

/**

* 订单状态

*

* 实现带有抽象方法的枚举

*

* @author jiqinlin

*

*/

public enum OrderState {

/** 已取消 */

CANCEL {public String getName(){return "已取消";}},

/** 待审核 */

WAITCONFIRM {public String getName(){return "待审核";}},

/** 等待付款 */

WAITPAYMENT {public String getName(){return "等待付款";}},

/** 正在配货 */

ADMEASUREPRODUCT {public String getName(){return "正在配货";}},

/** 等待发货 */

WAITDELIVER {public String getName(){return "等待发货";}},

/** 已发货 */

DELIVERED {public String getName(){return "已发货";}},

/** 已收货 */

RECEIVED {public String getName(){return "已收货";}};

public abstract String getName();

}

public static void main(String[] args) {

//枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值

ColorEnum colorEnum = ColorEnum.blue;

switch (colorEnum) {

case red:

System.out.println("color is red");

break;

case green:

System.out.println("color is green");

break;

case yellow:

System.out.println("color is yellow");

break;

case blue:

System.out.println("color is blue");

break;

}

//遍历枚举

System.out.println("遍历ColorEnum枚举中的值");

for(ColorEnum color : ColorEnum.values()){

System.out.println(color);

}

//获取枚举的个数

System.out.println("ColorEnum枚举中的值有"+ColorEnum.values().length+"个");

//获取枚举的索引位置,默认从0开始

System.out.println(ColorEnum.red.ordinal());//0

System.out.println(ColorEnum.green.ordinal());//1

System.out.println(ColorEnum.yellow.ordinal());//2

System.out.println(ColorEnum.blue.ordinal());//3

//枚举默认实现了java.lang.Comparable接口

System.out.println(ColorEnum.red.compareTo(ColorEnum.green));//-1

//--------------------------

System.out.println("===========");

System.err.println("季节为" + SeasonEnum.getSeason());

//--------------

System.out.println("===========");

for(Gender gender : Gender.values()){

System.out.println(gender.value);

}

//--------------

System.out.println("===========");

for(OrderState order : OrderState.values()){

System.out.println(order.getName());

}

}

}

java的枚举为什么可以定义抽象方法

纠正下,枚举类型中是不能有抽象想法的。

解释:枚举类型默认的就是public , static , final的。而final是没法被重写和继承的,而抽象类必须被重写和继承,这个是和枚举类型是有冲突的,所以正常情况是没法实现的。

java里什么情况用枚举啊

目的:为了解决类型不安全提出的

使用:当我们在类中要指定选项必须为某些类型时,就要考虑用到枚举,这是jdk1.5之后才提出的。

类型安全的枚举类型简介:

1)enum:可以定义一个类型,而且还可以限制该类型的取值在某个范围内

2)语法:enum enumName{枚举值1,...,枚举值n}

3)适用位置:包中、类中,但不能在方法中

4)注意:

1.所有的enum类型都继承自java.lang.Enum;

2.自定义的enum类型不能再有子类;

3.枚举类型的取值默认为public static final;

4.枚举类型中可以定义属性和方法;

5.构造器必须是私有的;

6.枚举类型的取值就是其实例对象,它会调用该枚举类型的构造器,还要实现枚举类型中所有的抽象方法;

7.枚举类型可以实现其它接口;

java枚举

这个枚举里面写了如下方法public

abstract

TrafficLamp

nextLamp();

以上为一个抽象方法,需要实现的,所以下面的RED有方法体(匿名类的概念),是为了实现抽象方法。

RED(30){

public

TrafficLamp

nextLamp(){

return

GREEN;

}

而30是传入int参数,因为下面写了有参的构造方法:

private

int

time;

private

TrafficLamp(int

time){this.time

=

time;

time=30这是RED的一个属性。

你可以把枚举看做一个类,而它的每个实例都是该类的对象,而且此对象是不可变的。

关于java枚举抽象方法和枚举类是抽象类吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-14,除非注明,否则均为首码项目网原创文章,转载请注明出处。