当前位置: 首页 > article >正文

【前端学java】java中final修饰符(5)

往期回顾:

  • 【前端学java】JAVA开发的依赖安装与环境配置 (0)
  • 【前端学Java】java的基础语法(1)
  • 【前端学java】JAVA中的packge与import(2)
  • 【前端学java】面向对象编程基础-类的使用 (3)
  • 【前端学java】类中的访问权限详解,通俗易懂(4)

什么是Final

在Java中,final是一个关键字,用于表示不可变的特性,类似于Js中的const声明。当final被应用到类、方法或变量时,它具有以下不同的含义。

Final类

如果一个类被声明为final,则该类不能被其他类所继承。这样的类称为"final类"。通常将类声明为final是为了防止其他类继承它,或者是为了确保类的实现不会被修改和继承。

示例代码:

final class MyClass {
    // 类的内容
}

// 下面的代码会引发编译错误,因为无法继承final类
class MySubclass extends MyClass {
    // 编译错误
}

Final方法

如果一个方法被声明为final,则子类不能覆盖(重写)这个方法。这样的方法称为"final方法"。通常将方法声明为final是为了确保方法的逻辑不会被修改,以及避免在子类中意外地改变其行为。

示例代码:

class Parent {
    // final方法
    public final void myMethod() {
        // 方法内容
    }
}

class Child extends Parent {
    // 编译错误:无法覆盖final方法
    public void myMethod() {
        // 子类中不能重写final方法
    }
}

Final变量

在Java中,final关键字还可以应用于变量,表示该变量的值只能被赋值一次,之后就不可再修改。一旦被赋值后,final变量将成为常量,并且必须在声明时或构造函数中初始化。

示例代码:

class MyClass {
    // final变量
    public final int myConstant = 10;

    // final变量的初始化可以在构造函数中完成
    public final double myDouble;

    public MyClass(double value) {
        this.myDouble = value;
    }

    // 下面的代码会引发编译错误,因为final变量的值不能再修改
    public void updateConstant() {
        // 编译错误:final变量的值不可更改
        myConstant = 20;
    }
}

总结:在Java中,final关键字用于表示不可变的类、方法或变量。final类不能被继承,final方法不能被子类重写,final变量的值只能被赋值一次且不可更改。通过使用final,可以增加代码的安全性,防止意外的修改和继承,并且优化编译器对常量的处理。

下一篇学习

  • 【前端学java】全网最通俗易懂的JAVA抽象概念(6)

http://www.kler.cn/news/136486.html

相关文章:

  • 最新版本jdbcutils集成log4j做详细sql日志、自动释放连接...等
  • Python实现微博舆情分析的设计与实现
  • 安全见闻8,量子力学见闻
  • Page Cache(页缓存
  • 关于希尔排序的理解
  • 基于深度学习的音乐生成与风格转换
  • Thales全方位企业数据防泄漏解决方案
  • 第十一章 将对象映射到 XML - 控制流属性的映射形式
  • 一道简单的无穷级数题目
  • 相似基因序列问题 ——查找
  • 算法-简单-二叉树-翻转、对称
  • golang学习笔记——日志记录
  • [Spring Cloud] Nacos 实战 + Aws云服务器
  • 贪吃蛇游戏制作
  • CentOS7安装Docker遇到的问题笔记
  • redhat下使用CentOS yum源,并安装docker
  • 【JavaEE初阶】 CSS相关属性,元素显示模式,盒模型,弹性布局,Chrome 调试工具||相关讲解
  • vue3-响应式核心
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • 如何在公网环境下使用内网穿透工具实现用ipad pro进行代码开发
  • 上位机与下位机通讯方式(转载)
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • 【草料】uni-app ts vue 小程序 如何如何通过草料生成对应的模块化二维码
  • 命令执行无回显的判断方法及dnslog相关例题的讲解
  • git提交时会将target也提交
  • Django学习日志06