接口

在 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. 基于kubeadm部署k8s1.80.0

    k8s搭建 硬件要求 测试环境 # master 2核 4G 20G # node 4核 8G 40G 生产环境 # master 8核 16G 100G # node 16核 64G 500G 方式 ...

  2. JVM运行时参数

    JVM运行时参数 JVM运行时参数是用于配置和调整Java虚拟机的行为和性能的参数.这些参数可以在启动Java应用程序时通过命令行或配置文件进行设置,合理配置参数可以使JVM虚拟机的达到更好的性能,降 ...

  3. 【LeetCode二叉树#07】左叶子节点之和(基于栈的迭代法前中后序遍历复习)

    左叶子节点之和 力扣题目链接(opens new window) 计算给定二叉树的所有左叶子之和. 示例: 思路 注意审题,这里是要求 左叶子节点 之和 不是二叉树中的左侧节点之和,因此使用层序遍历是 ...

  4. Golang条件编译介绍

    相信熟悉 Golang 的小伙伴不少都知道 条件编译 这个事,最近项目中也可能会用到这个东西.所以特意重新学习下,记录下学习的过程.这样用的时候记不住了,还可以直接过来看自己的笔记. 文章很多内容来源 ...

  5. slice 切片数组测试记录【GO 基础】

    〇.测试前准备 本文是在 GO 环境下测试记录系列之一,GO 基本环境部署步骤将略过,直接上代码. 下面是常用命令:[初始化 + 运行 + 编译] // {GOPATH} 环境变量值, example ...

  6. 内部UI自动化测试培训之python基础

    这个文档的由来是公司内部UI自动化测试培训的资料.部门为了减少测试工作量,准备做UI自动化测试.我写python,其他同事都是java,所以python基础和UI自动化测试selenium的培训就由我 ...

  7. [学习笔记]Linux + Nginx环境下部署 Web 站点

    ​部署后端程序,请阅读: [学习笔记]Linux环境下部署 .Net5 程序 - 林晓lx - 博客园 (cnblogs.com) 打包项目 以Vue项目为例,首先打包站点,前往项目的根目录并键入: ...

  8. SpringMVC简介 & 原理

    特点 1.轻量级,简单易学 2.高效,基于请求响应的MVC框架 3.与Spring兼容性好,与之无缝接合(就是它的一部分) 4.约定优于配置(maven) 5.功能强大:支持RESTful  数据验证 ...

  9. buildFast.js node.js 快速发布到gitee上,这样就不用每次点击,并且自动弹出发布页面,再点击发布,完美!

    buildFast.js node.js 快速发布到gitee上,这样就不用每次点击,并且自动弹出发布页面,再点击发布,完美! const fs = require('fs-extra'); fs.c ...

  10. 【2310. 个位数字为 K 的整数之和】背包

    import java.util.*; class Solution { public static void main(String[] args) { Solution solution = ne ...