final关键字_Java中的final关键字
我们都知道,Java是面向对象的语言,而面向对象有一种思想就是继承。但是有时候,出于某种原因,我们不希望我们的类、方法或者变量被继承或重写,这个时候,我们就需要final关键字来帮助我们达到这种效果。
final 类
当使用final关键字来标记一个类,则表示该类不能被继承。例如我们经常使用的String类就被标记为final,表明String类不能够继承。设想一下,如果我们可以继承 String 类,重写它的任何方法,并用特定 String 子类的实例替换所有 String 实例,那么对 String 对象进行操作的结果将变得不可预测。 而且考虑到到处都在使用 String 类,因此这种继承是不可接受的。 这就是为什么 String 类被标记为 final。
![](/assets/blank.gif)
Java中的String类
final 方法
被标记为final的方法是不能被重写的。当我们设计一个类并且认为一个方法不应该被重写时,我们可以将这个方法标记为final。有时候,我们并不想把我们的整个类都标记为final,我们只是希望它其中的部分方法不被重写就可以,这个时候,我们可以使用final关键字来修饰该方法。如我们的Thread类本身并不是final的,但是getName()方法是final的。
![](/assets/blank.gif)
java中Thread类的final方法
final 变量
被标记为final的变量是不能被重新赋值的。一旦final变量被初始化,就不能被修改。
final类型修饰的变量分为以下几种情况:
- 原始类型的final变量,例如int,long,double等,一旦初始化,是不能被修改的,否则编译器会报错。
- 引用类型的final变量,例如我们自定义一个final 类型的Person对象,虽然Person对象本身不能被修改,但是我们还是可以通过person.setName("chris");方法来修改Person中name的属性值。
- final类型的变量要么是常量字段,即声明的时候就赋一个常量值,要么只能被赋值一次,之后不能被修改。如我们通常会在一个类中声明一个final类型的成员变量,然后在构造方法中将该成员变量初始化一次,有些地方将这种final变量叫做final blank(final 空白)。
- final类型的形式参数。有时候,我们会把一个方法的形参设置为final的,譬如:
public void setName(final String name) { this.name = name;}
这表明我们不希望该形参在方法内被修改。
总结
在本文中,我们了解了final的一些常用用法,例如final变量可以用来修饰类,方法,变量等,这在有些情况下对我们的代码设计很有帮助。
final关键字_Java中的final关键字相关推荐
- java修饰类的关键字_JAVA中的修饰关键字
今天我们来说说JAVA中的修饰关键字. 常用的有: 1.final 关键字 修饰成员变量:a. 必须初始化值. b. 被fianl修饰的成员变量赋值,有两种方式:1.直接赋值 2.全部在构造方法中赋初 ...
- 什么是java的关键字_java中常见的关键字
什么是关键字呢? 概述:关键字就是在java语言中赋予特殊含义的单词 特点:1.组成的关键字的单词全是小写 2.常见的代码编辑器中,对关键字都有特殊的颜色标记 比如在idea中对关键字都有特殊的颜色标 ...
- java transient 关键字_java中的transient关键字详解
前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...
- java中default关键字_Java 中的 default 关键字及代码示例
本文通过代码示例介绍如何在 Java 中使用 default 关键字. 基本上,有 3 个地方可以使用 Java 中的 default 关键字: 在 switch case 语句中指定默认值 在 Ja ...
- java异常类关键字_Java中的异常处理关键字是什么?
java异常处理中使用了四个关键字. throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理.throw关键字用于向运行时抛出异常来处理它. throws:当我们在方法中抛出任何已检查的 ...
- java中有效关键字_java中有效的关键字
true.false.null都不是关键字 goto.const.是保留的关键字 abstract continue for new switch default if package synchro ...
- java中的me关键字_java中的volatile关键字
一.详细解释 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并 ...
- java final定义_Java中final关键字的用法
final在Java中并不常用,然而它却为我们提供了诸如在C语言中定义常量的功能,不仅如此,final还可以让你控制你的成员.方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中 ...
- java+中的final关键字有哪些用法_Java中的Final关键字用法汇总及简单示例
可能使用到final的情况有3种:数据.方法和类. 一.final数据 对于基本类型,final使数值恒定不变:而对于对象引用,final使引用恒定不变.一旦引用被初始化指向一个对象,就无法把它改为指 ...
最新文章
- 玩转Parse(第一篇:新手入门)
- 带命令行参数的main函数的误解[到处转载的垃圾]
- 2021年新高考八省联考成绩查询辽宁,辽宁八省联考成绩什么时候出 辽宁八省联考成绩查询入口...
- QT导入libcurl
- [转]DevExpress GridControl 关于使用CardView的一点小结
- Sql Full-Text Filter
- c# RestSharp(http请求)
- Linux操作系统基础命令
- 类EMD的“信号分解方法”及MATLAB实现(第一篇)——EEMD
- java计算集合交差并集
- 小黄鸡 java_用java实现Simsimi小黄鸡接口
- Apache Doris 在京东广告报表查询场景下的应用
- HDOJ--1162--Eddy's picture
- PowerBI自动切换中英文单位
- linux中mtd是什么目录,关于linux mtd的理解
- 【每日面试】2021政采云Java一面
- AS(android studio) 添加第三方库时报,Error: Failed to resolve: com.github Affected Modules 解决办法
- 【办公】罗技设备(基于M590)使用方法
- shell习题-27
- TRS全文检索开发文档及API,工具包
热门文章
- 走近分形与混沌(part4)--牛顿与混沌
- pycharm更改为系统python3_今天配置好python3 装好了pycharm 就新建一个django一直改不好...
- 开源工具 @sap/ux-ui5-tooling 介绍
- SAP UI5 应用开发教程之二十九 - SAP UI5 的路由和导航功能介绍试读版
- SAP Spartacus 服务器端 nodejs 应用里渲染 Angular Component 的一个例子
- css 元素 property value计算过程的学习笔记
- SAP UI5里使用jQuery.ajax采用同步的方式读取数据
- SAP Analytics Cloud里的Planning model
- Why SAP SQL view is not recommended to use in SQL ?
- 在SAP云平台ABAP编程环境里使用CAP模型创建Fiori应用