Java50个关键字之final

1)final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可被继承(不能再派生出新的子类)。

final属性:被final修饰的变量不可变,由于不可变有两重含义,一是引用不可变,二是对象不可变。那么final到底指的是哪种含义呢?下面通过一个例子来进行说明。

从以上例子中可以看出,final指的是引用的不可变性,即它只能指向初始时指向的那个对象,而不关心指向对象内容的变化。所以,被final修饰的变量必须被初始化。

一般可以通过以下几种方式对其进行初始化:
①在定义的时候初始化;
②final成员变量可以在初始化块中初始化,但不可在静态初始化块中初始化;
③静态final成员变量可以在静态初始化块中初始化;
④在类的构造器中初始化,但静态final成员变量不可以在构造方法中初始化。final方法:当一个方法声明为final时,该方法不允许任何子类重写这个方法,但子类仍然可以使用这个方法。另外还有一种被称为inline(内联)的机制,当调用一个被声明为final的方法时,直接将方法主体插入到调用处,而不是进行方法调用(类似于C++语言中的inline),这样做能提高程序的效率。

final参数:用来表示这个参数在这个方法内部不允许被修改。final类:当一个类被声明为final时,此类不能被继承,所有方法都不能被重写。但这并不表示final类的成员变量也是不可改变的,要想做到final类的成员变量不可改变,必须给成员变量增加final修饰。值得注意的是,一个类不能既被声明为abstract,又被声明为final。

Original: https://www.cnblogs.com/GeniusWang/p/15915209.html
Author: Genius_Wang
Title: Java50个关键字之final

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583130/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Scipy

    1.Scipy简介 使用python做科学计算,详情参考官方文档 scipy软件包包含专用于科学计算中常见问题的各种工具箱,他的不同子模块对应于不同的应用程序,例如插值,积分,优化…

    Linux 2023年6月6日
    083
  • DQL

    查询语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组后条件 order by 排序字段 limit 分页限定 …

    Linux 2023年6月7日
    076
  • 022.常见硬盘检测方式

    硬盘监测概述 硬盘异常损坏日常相对概率较高,同时不同的文件系统(xfs,reiserfs,ext3)其检测方式不同。建议使用dmesag查看有没有硬件I/O故障的日志,也可使用用f…

    Linux 2023年6月7日
    090
  • Linux vim退出命令

    :w – 保存文件,不退出 vim:w file -将修改另外保存到 file 中,不退出 vim:w! -强制保存,不退出 vim:wq -保存文件,退出 vim:w…

    Linux 2023年6月13日
    092
  • 对比nushell和powershell

    2021-07-17 第一版 有些对比领域缺失,这篇文章会持续更新。 这是一篇对比powershell和nushell的文章。我是powerhsell专家,又是nushell新手,…

    Linux 2023年6月14日
    0109
  • 华为ensp网络拓扑图使用MSTP、OSPF、DHCP、端口聚合以及PPP(CHAP认证)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0102
  • springboot分析——与其他组件的整合(JPA规范/atomikos/redis)

    一:与JPA规范整合 jpa是一套orm的规范,提供api接口,hirebnate就是对jpa的一套实现,下面我们看看springboot如何 与jpa整合 1:添加依赖和配置 j…

    Linux 2023年5月28日
    0115
  • JQ 实现对比两个文本的差异并高亮显示差异部分

    利用jq对比两段文本的差异,差异的内容用不同颜色表示出来。 在线参考demo:http://incaseofstairs.com/jsdiff/ 项目地址:https://gith…

    Linux 2023年6月7日
    0111
  • Linux三剑客命令—awk

    一、概念说明 官方概念说明: gawk – pattern scanning and processing language模式扫描和处理文件语言 AWK 是一种处理文…

    Linux 2023年5月27日
    098
  • mongodb压力测试工具ycsb

    mongodb安装 这里以安装单机版为例,rpm包方式安装 启动 ​ systemctl start mongod YCSB压测工具安装 这里不采用网上大多说的maven方式源码安…

    Linux 2023年6月14日
    092
  • 建表参数PCTFREE、PCTUSED、INITRANS和MAXTRANS释疑

    PCTFREE与PCTUSED建表时可以指定以上两个参数的值(整数),PCTFREE表示一个块中保留的剩余空间大小百分比,该保留空间主要用于已有记录的更 新操作;PCTUSED表示…

    Linux 2023年6月14日
    090
  • PWN学习总结

    一、栈溢出原理 什么是栈溢出?栈溢出就是缓冲区溢出的一种。 由于缓冲区溢出而使得有用的存储单元被改写,往往会引发不可预料的后果。程序在运行过程中,为了临时存取数据的需要,一般都要分…

    Linux 2023年6月8日
    097
  • k8s之部署metrics-server 转载

    Metrics Server是Kubernetes内置自动缩放管道的可扩展,高效的容器资源指标来源。 Metrics Server从Kubelet收集资源指标,并通过Metrics…

    Linux 2023年6月14日
    081
  • Docker私有仓库搭建

    Docker私有仓库搭建 1、Docker Registry 网上有很多的 Registry服务器都支持第三方用户注册,而后基于用户名去做自己的仓库,但是使用互联网上的 Regis…

    Linux 2023年6月7日
    0152
  • 服务器监控-TOP命令详解

    用jmeter进行性能测试的时候,top命令是最方便可用的服务器监控命令,可以看出服务器的当前负载量,CPU占用率,内存占用率等重要信息,下面详细解说一下top命令里面的各个指标。…

    Linux 2023年5月27日
    0111
  • Pytorch 中 tensor的维度拼接

    torch.stack() 和 torch.cat() 都可以按照指定的维度进行拼接,但是两者也有区别,torch.satck() 是 增加新的维度进行堆叠,即其维度拼接后会增加一…

    Linux 2023年6月7日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球