首页 > 编程语言 >Java 枚举(Enums)解析:提高代码可读性与易维护性

Java 枚举(Enums)解析:提高代码可读性与易维护性

时间:2024-03-06 21:58:02浏览次数:217  
标签:Java Level 实现 易维护性 接口 枚举 void Enums public

接口

在 Java 中,实现抽象的另一种方式是使用接口。

接口定义

接口是一个完全抽象的类,用于将具有空方法体的相关方法分组:

// 接口
interface Animal {
  public void animalSound(); // 接口方法(没有具体实现体)
  public void run(); // 接口方法(没有具体实现体)
}

实现接口

要访问接口方法,必须使用 implements 关键字(而不是 extends)由另一个类“实现”(有点类似于继承)。接口方法的具体实现体由“实现”类提供:

// 接口
interface Animal {
  public void animalSound(); // 接口方法(没有具体实现体)
  public void sleep(); // 接口方法(没有具体实现体)
}

// Pig “实现” Animal 接口
class Pig implements Animal {
  public void animalSound() {
    // animalSound()的具体实现体在这里提供
    System.out.println("The pig says: wee wee");
  }
  public void sleep() {
    // sleep()的具体实现体在这里提供
    System.out.println("Zzz");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig(); // 创建一个 Pig 对象
    myPig.animalSound();
    myPig.sleep();
  }
}

接口注意事项

  • 与抽象类一样,接口不能用于创建对象(在上面的示例中,无法创建“Animal”对象)
  • 接口方法没有具体的实现体 - 实现体由“实现”类提供
  • 在实现接口时,必须重写其所有方法
  • 接口方法默认为抽象和公共的
  • 接口属性默认为公共、静态和最终的
  • 接口不能包含构造函数(因为它不能用于创建对象)

何时使用接口?

  1. 为了实现安全性 - 隐藏对象的某些细节,仅显示其重要细节(接口)。

  2. 为了实现多重继承 - Java 不支持“多重继承”(一个类只能继承自一个超类)。但是,它可以通过接口实现,因为类可以实现多个接口。注意:要实现多个接口,请用逗号分隔它们(见下面的示例)。

多个接口

要实现多个接口,请用逗号分隔它们:

interface FirstInterface {
  public void myMethod(); // 接口方法
}

interface SecondInterface {
  public void myOtherMethod(); // 接口方法
}

class DemoClass implements FirstInterface, SecondInterface {
  public void myMethod() {
    System.out.println("Some text..");
  }
  public void myOtherMethod() {
    System.out.println("Some other text...");
  }
}

class Main {
  public static void main(String[] args) {
    DemoClass myObj = new DemoClass();
    myObj.myMethod();
    myObj.myOtherMethod();
  }
}

接口的优势

  • 接口可以促进代码的重用。
  • 接口可以提高代码的可读性和可维护性。
  • 接口可以实现解耦,使代码更灵活。

总结

接口是 Java 中重要的概念,它们可以帮助您编写更安全、更可重用、更灵活和更易于维护的代码。

枚举(Enums)

枚举是一个特殊的“类”,表示一组常量(不可更改的变量,如 final 变量)。

创建枚举

要创建一个枚举,请使用 enum 关键字(而不是 classinterface),并用逗号分隔常量。注意,它们应该使用大写字母:

enum Level {
  LOW,
  MEDIUM,
  HIGH
}

您可以使用点语法访问枚举常量:

Level myVar = Level.MEDIUM;

Enum 是“enumerations”的缩写,意思是“具体列举”。

在类内部定义枚举

您还可以在类内部定义枚举:

public class Main {
  enum Level {
    LOW,
    MEDIUM,
    HIGH
  }

  public static void main(String[] args) {
    Level myVar = Level.MEDIUM;
    System.out.println(myVar);
  }
}

输出将是:

MEDIUM

在 Switch 语句中使用枚举

枚举常用于 switch 语句中,以检查相应的值:

enum Level {
  LOW,
  MEDIUM,
  HIGH
}

public class Main {
  public static void main(String[] args) {
    Level myVar = Level.MEDIUM;

    switch(myVar) {
      case LOW:
        System.out.println("Low level");
        break;
      case MEDIUM:
        System.out.println("Medium level");
        break;
      case HIGH:
        System.out.println("High level");
        break;
    }
  }
}

输出将是:

Medium level

遍历枚举

枚举类型具有 values() 方法,该方法返回所有枚举常量的数组。当您想要遍历枚举的常量时,此方法非常有用:

for (Level myVar : Level.values()) {
  System.out.println(myVar);
}

输出将是:

LOW
MEDIUM
HIGH

枚举与类的区别

枚举可以像类一样具有属性和方法。唯一的区别是枚举常量是 publicstaticfinal(不可更改的 - 不能被覆盖)的。

枚举不能用于创建对象,也不能扩展其他类(但可以实现接口)。

何时以及为何使用枚举?

当您知道值不会更改时

,比如月份天数、星期几、颜色、扑克牌等,可以使用枚举。

使用枚举可以使代码更易读、更易维护,并避免使用 final 变量和 switch 语句中的字符串。

枚举的优势:

  • 可读性强
  • 易于维护
  • 安全性高
  • 代码简洁

总结:

枚举是 Java 中一种强大的工具,可以用来表示一组常量。它们易于使用和理解,并且可以使您的代码更易读、更易维护。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

标签:Java,Level,实现,易维护性,接口,枚举,void,Enums,public
From: https://www.cnblogs.com/xiaowange/p/18057680

相关文章

  • 卡码java基础课 | 9.打印正方形
    学习内容:通过一道题目来学习使用循环嵌套。例题:解:点击查看代码importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt();for(intro......
  • java定时任务
    一单机定时任务Timerjava.util.Timer是JDK1.3开始就已经支持的一种定时任务的实现方式。Timer内部使用一个叫做TaskQueue的类存放定时任务,它是一个基于最小堆实现的优先级队列。TaskQueue会按照任务距离下一次执行时间的大小将任务排序,保证在堆顶的任务最先执行。这样......
  • 卡码java基础课 | 8.奇怪的信
    学习内容:通过一道题加深对取模和除法的理解例题:解:点击查看代码importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);while(sc.hasNext()){intnum......
  • 从零开始搭建Springboot开发环境(Java8+Git+Maven+MySQL+Idea)之一步到位
    说明所谓万事开头难,对于初学Java和Springboot框架的小伙伴往往会花不少时间在开发环境搭建上面。究其原因其实还是不熟悉,作为在IT界摸爬滚打数年的老司机,对于各种开发环境搭建已经了然于胸,自己当年也是这么过来的。今天我就毕其功于一役,解放大家的时间,让凡人的环境配置见鬼去吧......
  • JAVA API:ArrayList(泛型类)基本使用
    ArrayList代表的是一种集合,一种容器,类似于数组。 容器主要操作:增删改查   packagecom.itheima.ArrayList;importjava.util.ArrayList;importjava.util.List;publicclassdemo{publicstaticvoidmain(String[]args){ArrayListlist=new......
  • 卡码java基础课 | 7.摆平积木
    学习内容:用一道题目来练习ArrayList的遍历和访问操作。例题:解:点击查看代码importjava.util.ArrayList;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);in......
  • Java学习总结 Day2
    Java学习总结Day2构造器publicclassperson{//一个类默认会有一个方法(构造器)Stringname;intage;//实例化初始值/*1.使用new必须有构造器,本质是调用构造器*2.初始化值*3.快捷键alt+insert*/publicperson(){}//有......
  • JAVA API:String String使用注意事项
    包:分门别类程序的工具,类似文件夹  JAVAlang包下不需要导包的。   String:     String常用方法:          String注意事项:              ......
  • java复习笔记 - 1
           java是一门面向对象的语言,其解决问题的方式是通过封装属性和方法为对象,通过调用对象的不同方法来达到解决问题的步骤。其本身一开始封装了不少类,可以直接使用,常见的比如String,包装类,集合类,文件类,异常类等常用的,还有一些关于数字处理的后面再说。因为最近在看数据......
  • netcore AES同等效转java语言 加密方法
    privatestaticbyte[]Keys={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};///<summary>///DES加密字符串///</summary>///<paramname="encryptString&qu......