• 技术文章 >java >java基础

    java枚举中添加抽象方法

    小妮浅浅小妮浅浅2021-01-07 14:07:08原创3062

    在对抽象方法的使用时,因为只是对方法的一种定义,应用到具体的实例处理上,细节方法会不太理想。这里我们可以结合枚举的优势,以抽象方法作为外在条件,枚举作为内部方法的细化对程序进行操作。下面我们就抽象方法概念、格式简单介绍,然后结合枚举的方法为带来带来实例讲解。

    1.抽象方法概念

    使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。

    2.抽象方法格式

    1

    访问修饰符 abstract 返回类型 方法名 (参数列表)

    3.枚举实现抽象方法实例

    如果写抽象方法,枚举类的所有实例必须实现抽象方法。MONDAY本身就是一个AbstractWeek对象的引用。在初始化这个枚举类的时候,等同于执行的是AbstractWeek MONDAY= new AbstractWeek(0,"星期一")。然后用匿名内部类的方式实现getNextDay()。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    /**

     * 枚举类可以有抽象方法,但是必须在它的实例中实现

     */

    public enum AbstractWeek {

      

        MONDAY(0,"星期一") {

            @Override

            public AbstractWeek getNextDay() {

                return TUESDAY;

            }

        }, TUESDAY(1,"星期二") {

            @Override

            public AbstractWeek getNextDay() {

                return WEDNESDAY;

            }

        }, WEDNESDAY(2,"星期三") {

            @Override

            public AbstractWeek getNextDay() {

                return THURSDAY;

            }

        }, THURSDAY(3,"星期四") {

            @Override

            public AbstractWeek getNextDay() {

                return FRIDAY;

            }

        }, FRIDAY(4,"星期五") {

            @Override

            public AbstractWeek getNextDay() {

                return SATURDAY;

            }

        }, SATURDAY(5,"星期六") {

            @Override

            public AbstractWeek getNextDay() {

                return SUNDAY;

            }

        }, SUNDAY(6,"星期日") {

            @Override

            public AbstractWeek getNextDay() {

                return MONDAY;

            }

        };

      

        private int num;

        private String desc;

      

        AbstractWeek(int num,String desc) {

            this.num = num;

            this.desc=desc;

        }

      

        //一个抽象方法

        public abstract AbstractWeek getNextDay();

      

        public static void main(String[] args) {

            String nextDay=AbstractWeek.MONDAY.getNextDay().toString();

            System.out.println(nextDay);

        }

    }

    编译后所有实例都会成为内部类,相当于每个实例用匿名内部类的形式实现getNextDay的方法。如:

    1

    2

    3

    4

    5

    6

    AbstractWeek MONDAY= new AbstractWeek (){

            @Override

            public AbstractWeek getNextDay() {

                return TUESDAY;

            }

    };

    以上就是在java枚举中添加抽象方法的使用,这里我们结合了两者的优势,对程序实例完成最终的处理。如果对抽象方法使用有一定要求的,可以结合枚举来解决。

    专题推荐:java枚举 抽象方法
    上一篇:switch在java枚举中的用法 下一篇:构造函数在java枚举中的使用

    相关文章推荐

    • java枚举是什么• java enum使用方法有几种• java枚举中的values遍历• switch在java枚举中的用法

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网