Final 关键字

  • adj. 最终的;最后的;决定性的;不可改变的

1.修饰变量

final variable 意味 【最后的变量,不可改变的变量即常量】 Java中该关键字即代表常量

  • 修饰基本类型的变量,在赋初始值之后就不能修改,否则会编译不通过。
  • 修饰引用类型变量,在初始化后不能指向另外的对象,否则会编译不通过。
  • 在给被final修饰的变量赋值的时候,可以在变量声明时赋值,也可以在构造方法中赋值。

应用场景:用final修饰将变量设置为常量,以后也不打算做修改,一般同static共用。

// 固定的业务场景代码
public static final String SERVICE_SCENE_CODE = "-1";
// 定义存储于Redis中的Key
public static final String TEST_REDIS_KEY = "TEST_REDIS_KEY_FINAL";

2.修饰方法

final method 意味 【最终的方法,不可被改变的方法】Java中该关键字即代表不可被改变的方法,即不能被子类重写,子类不能改变其原有意味。

  • 将一个方法定义为final方法,为了防止任何继承自他的子类修改它的含义。
  • 类的private方法会隐式地被指定为final方法。

3.修饰类

final class 意味 【最终的类,不可改变的类】Java中该关键字代表最终类,不能再‘繁衍后代了’即不能被继承。

  • 用final修饰一个类时,表明这个类不能被继承。
  • final类中的成员变量可以根据需要设为final。
  • final类中的所有成员方法都会被隐式地指定为final方法。
 1 // 被final修饰的class是最终类,不能被继承
2 public final class FinalClass {
3 // 被final修饰的常量可以在声明时赋值
4 private final String str;
5
6 public FinalClass() {
7 str = "1.被final修饰的变量必须初始化,1.声明时赋值2.构造方法中赋值";
8 }
9
10 public void testOut() {
11 System.out.println("3.被final修饰的方法不能被子类重写");
12 }
13
14 public static void main(String[] args) {
15 // 1.final变量即最终变量不能被修改
16 FinalClass finalClass = new FinalClass();
17 System.out.println(finalClass.str);
18 // 被final修饰的引用类型变量,初始化后不能指向另一个对象,否则编译不通过
19 final Object finalObject = new Object();
20 // 试图修改后编译不通过
21 finalObject = new Object();
22 // 2.在变量创建的时候赋值
23 final String finalStr = "2.被final修饰的变量,再赋值后就是最终变量即常量,不能被修改";
24 System.out.println(finalStr);
25 // 3.final修饰的方法是最终方法不能被子类重写修改其意味
26 finalClass.testOut();
27 }
28 }
29 // 5.不能继承被final修饰的最终类,否则会编译不通过
30 class CantExtend extends FinalClass {
31 public String name;
32 // 4.试图重写父类中被final修饰的方法时会导致编译不通过
33 public void testOut() {
34 System.out.println("不能重写父类中final方法");
35 }
36 }

Silly Java-Final 关键字的更多相关文章

  1. 深入java final关键字

    Java final关键字详解:https://blog.csdn.net/kuangay/article/details/81509164 深入java final关键字 用法注意点和JVM对其进行 ...

  2. 【转载】java final 关键字的几种用法

    原文链接点这里,感谢博主分享 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构 ...

  3. Java——final关键字

    前言 Java中的关键字final的含义通常为"这是无法改变的".下面将介绍final用于修饰数据.方法和类的这三种情况. final数据 许多编程语言都有某种方法,来向告诉编译器 ...

  4. [java]final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...

  5. [java]final关键字、finally关键字与finalize()方法

    final关键字: final关键字通常指的是“无法改变的”,使用“无法改变”这样修饰可能出于两个原因:设计或者效率. final可以修饰变量.方法和类. 一.final变量 一个既是static又是 ...

  6. java final关键字详解

    final是java中保留关键字,可以声明成员变量.类.方法与本地变量,一旦引用final关键字,将不能再改变这个引用,编译器会检查代码,要是想改变该引用,会报错. final变量? 凡是对成员变量或 ...

  7. 我去,你竟然还不会用 Java final 关键字

    写一篇文章容易吗?太不容易了,首先,需要一个安静的环境,这一点就非常不容易.很多小伙伴的办公室都是开放式的,非常吵,况且上班时间写的话,领导就不高兴了:只能抽时间写.其次,环境有了,还要有一颗安静的心 ...

  8. java final 关键字醍醐灌顶

    醍醐灌顶: final 关键字,它可以修饰数据 .方法.类. 可能有些同学傻傻分不清出,这里可以快速弄懂final; final 实例域: 可以将实例域定义为final,构建对象时必须初始化这样的域, ...

  9. Java final关键字特点

    一.特点 1.由于继承,方法可以重写,所以父类的功能就会被子类覆盖2.有时候我们不想子类覆盖父类的功能,这时候我们可以使用final关键字3.final可以修饰:类.变量,方法.4.final修饰类, ...

  10. java final关键字与static关键字

    一  final关键字 1.final修饰类不可以被继承,但是可以继承其他类. 例如: class Yy {} final class Fu extends Yy{} //可以继承Yy类 class ...

随机推荐

  1. 通用性能测试过程模型GAME(A)

    1.3.1  Goal(定义目标) 制定一个明确而详细的测试目标是性能测试开始的第一步,也是性能测试成功的关键. 本步骤的开始时间:需求获取阶段 本步骤的输入:性能需求意向 本步骤的输出:明确的性能测 ...

  2. WPF datagrid 弹出右键菜单时先选中该项

    private void datagrid_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)    {        ...

  3. Matplotlib植入PyQt5 + QT5的UI呈现

    实现matplotlib图形通过PyQt5+Qt5在GUI中呈现步骤: 第一步,通过matplotlib.backends.backend_qt5agg类来连接PyQt5: import matplo ...

  4. RESTful作用与特性

    最近在项目中要使用rest风格的设计,学习了一下. 知乎网友说的一句话精确的解释了REST: URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作-(https://ww ...

  5. Leetcode: Construct Binary Tree from Preorder and Inorder Traversal, Construct Binary Tree from Inorder and Postorder Traversal

    总结: 1. 第 36 行代码, 最好是按照 len 来遍历, 而不是下标 代码: 前序中序 #include <iostream> #include <vector> usi ...

  6. .Net CCNet C#6.0 自动化编译问题解决

    一.问题描述 由于C#6.0一些新的语法特性,导致先前部署的CCNet持续集成平台出现问题,无论是手动还是命令行均不能编译.   二.解决方案 1.下载BuildTools_Full.exe,地址:h ...

  7. Android Studio添加assets文件夹

    Step #1:调出项目结构管理区域 View->Tool Windows->Project Step #2:结构管理区域选择“Project” Step #3:新建"asset ...

  8. Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3

    一.现代操作系统的权限分离: 现代操作系统一般都至少分为内核态和用户态.一般应用程序通常运行于用户态,而当应用程序调用系统调用时候会执行内核代码,此时会处于内核态.一般的,应用程序是不能随便进入内核态 ...

  9. 160329(二)、web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  10. Spring的AOP细节理解

    什么是AOP?AOP:是面向切面编程,是对面向对象编程(oop)的一种补充,为什么需要AOP?例如在我们做一个计算器,要求我们每次运行对应的功能(也就是进行运算时)都要输出日志,以便于知道程序是怎么运 ...