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

接口

在 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,关注后即可获取最新文章推送

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

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

java 07 接口

1.interface    接口2.接口中的成员修饰符固定  publicstaticfianl  //成员变量  只通过类访问   publicabstract    //成员函数   3.接口里所有的方法都是抽象的,抽象类中,可以没有抽象方法。  类与类继承,类与接口是实现的关系。降低耦合(高

java8中接口中的default方法

在java8以后,接口中可以添加使用default或者static修饰的方法,在这里我们只讨论default方法,default修饰方法只能在接口中使用,在接口种被default标记的方法为普通方法,可以直接写方法体。实现类会继承接口中的default方法如果接口A中有default方法:publicinterfaceA{publi

Java8之Stream

在使用Stream之前先介绍几个概念:1、函数式接口2、常用的函数式接口3、Lambda4、方法引用 1、函数式接口  1.只定义了一个抽象方法的接口。  2.JDK8接口中的静态方法和默认方法,都不算是抽象方法。  3.接口默认继承java.lang.Object,所以如果接口显示声明覆盖了Object中方法,

@protocol (协议)和 @interface (接口)的区别

ObjectiveC中的协议(@protocol),相当于C,Java等语言中的接口(Interface)。协议本身不实现任何方法,只是声明方法,使用协议的类必须实现协议方法。ObjectiveC中的接口(@interface),相当于C,Java等语言中的类(Class),是类的一个声明,不同与C,Java等语言的接口

SpringBoot开发案例之整合Dubbo提供者(二)

!00.jpg(https://blog.52itstyle.com/usr/uploads/2017/07/1329278006.jpg)大家有没有注意到,上一篇中提供者,暴露接口的方式?混搭。springboot本身接口实现使用了注解的方式,而Dubbo暴露接口使用的是配置文件的实现方式,即如下:代码importorg.s