接口

在 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 枚举(Enums)解析:提高代码可读性与易维护性的更多相关文章

  1. Unity3d 基本设计开发 原则(提高代码可读性)

    参考:http://blog.csdn.net/qq_34134078/article/details/51780356 1.单一原则 即:明确类的定义.通俗来讲,让他们只做一件事,而不是多件事. 提 ...

  2. Java枚举的小知识点

    enum 是jdk1.5引入的,使用它可以创建枚举类型,就像使用class创建类一样. enum关键字创建的枚举类型默认是java.lang.Enum(一个抽象类)的子类 用法1 常量 一般定义常量都 ...

  3. JAVA与DOM解析器提高(DOM/SAX/JDOM/DOM4j/XPath) 学习笔记二

    要求 必备知识 JAVA基础知识.XML基础知识. 开发环境 MyEclipse10 资料下载 源码下载   sax.dom是两种对xml文档进行解析的方法(没有具体实现,只是接口),所以只有它们是无 ...

  4. Java 性能优化手册 — 提高 Java 代码性能的各种技巧

    转载: Java 性能优化手册 - 提高 Java 代码性能的各种技巧 Java 6,7,8 中的 String.intern - 字符串池 这篇文章将要讨论 Java 6 中是如何实现 String ...

  5. 精简CSS代码,提高代码的可读性和加载速度

    前言 提高网站整体加载速度的一个重要手段就是提高代码文件的网络传输速度.之前提到过,所有的代码文件都应该是经过压缩了的,这可提高网络传输速度,提高性能.除了压缩代码之外,精简代码也是一种减小代码文件大 ...

  6. Java 面试知识点解析(四)——版本特性篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  7. 《码处高效:Java开发手册》之代码风格

    流水淡,碧天长,鸿雁成行.编码风格,简捷清爽,反引无限风光. 在美剧<硅谷>中有这样一个经典镜头,主人公 Richard 与同为开发工程师的女友闹分手,理由是两人对缩进方式有着截然不同的编 ...

  8. 提高代码质量 CheckStyle FindBugs PMD

    提高代码质量-工具篇 注:这是一篇翻译文章,原文:How to improve quality and syntax of your Android code,为了理解连贯,翻译过程中我修改了一些陈述 ...

  9. Java 面试知识点解析(二)——高并发编程篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  10. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

随机推荐

  1. Q查询的高级用法

    示例:如前端需要通过下拉框选择需要通过什么过滤字段来查询输入的关键字,后端如何使用Q查询过滤包含输入的关键字呢? def customers(request): search_field = requ ...

  2. .NET Core 集成微信支付签名错误

    .NET Core 集成微信支付签名错误 The provided data is tagged with 'Universal' class value '16', but it should ha ...

  3. 用BootstrapBlazor组件制作新增Customer Order的页面

    1.在Shared目录下新建OrderCreateView.razor文件: 2.在OrderCreateView.razor里用最简单的表格准备好布局 3.准备好BootstrapBlazor的组件 ...

  4. mysql常用语句(持续更新)

    查询数据库中各表数量 select table_name,table_rows from information_schema.tables where TABLE_SCHEMA = 'miot' o ...

  5. 【Azure 应用服务】应用代码中需要使用客户端证书访问服务接口,部署在应用服务后报错不能找到证书(Cannot find the X.509 certificate)

    问题描述 在应用中,需要访问另一个服务接口,这个接口需要使用客户端证书进行认证.在代码中使用 System.Security.Cryptography.X509Certificates 加载Windo ...

  6. 【Azure 事件中心】在Azure Function App中消费Event Hub数据,时常出现EventReceiveError

    问题描述 在Azure Function App中消费Event Hub数据,时常出现EventReceiveError:New receiver 'P3-00122a562-4fa4-7f3f-ad ...

  7. ASP.NET Core 选项

    目录 1,选项接口 2,注入配置与IOptions 3,IOptionsSnapshot 首先要了解 ASP.NET Core 中的配置,请点击这里了解:https://www.cnblogs.com ...

  8. linux 三剑客命令

    Linux 命令集合 目录 Linux 命令集合 基础概念 1 软连接和硬链接 1.1 基础概念 1.2 如何创建软链接 零.正则 01 区别 02 通配符 03 基础正则 04 扩展正则 一 awk ...

  9. maven打包出现 ����applets.user.service.UserService����-2022新项目

    一.问题由来 新项目的框架刚搭建好,还不能正常的运行,我们这边就开始写代码,因为项目还在设计阶段,很多东西比如说需求 都还在讨论之中.分层架构采用的是cola4.0的架构,具体的代码由我们自己来进行实 ...

  10. 常用Linux系统性能分析命令

    Linux系统提供了许多命令来分析系统性能.以下是一些常用的Linux系统性能分析命令: top:实时监视系统的运行状态和进程信息,包括CPU使用率.内存使用情况.进程状态等. 实例:直接在终端中输入 ...