【java基础】深入了解final关键字

前言

说到final,相信大家都不陌生,实际开发中也都用到过。本文将从final基本用法、多线程角度介绍final

final基本用法

final 字面意思是最终的,不可改变的。可以修饰类、方法、变量,下面将从这三个方面介绍

修饰类

将类定义为final时,说明这个类不允许被继承。
在实际开发如果不想被人继承扩展你的类可以定义成fianl的,常见有工具类和jdk里的一些类,如String、Byte、Boolean等等。

![![在这里插入图片描述](https://img-blog.csdnimg.cn/20200322154527623.pn](https://img-blog.csdnimg.cn/2020032215460622.png
至于实际开发中是否有必要把类定义成final的,还是需要从全局的架构设计角度去思考

修饰方法

  1. 当一个方法被final关键字修饰时,说明此方法不能被子类重写
  2. 如果父类方法被private和final同时修饰,子类里的相同方法其实已经不是重写父类的方法了(也好理解因为private是父类私有的方法)
  3. private修饰的方法隐式地指定为final的
    在这里插入图片描述
    在这里插入图片描述

修饰变量

成员变量
  成员变量分为类变量和实例变量,这两种类型的变量赋初值的时机是不同的
  1. 类变量:必须要在静态初始化块中指定初始值或者声明该类变量时指定初始值

  2. 实例变量:在非静态初始化块,声明该实例变量或者在构造器中指定初始值
    在这里插入图片描述

局部变量

局部变量用final修饰,更容易理解,只能赋值一次
在这里插入图片描述

引用类型

基本类型我们都知道,一但赋值就不能改变,下面我们来看看引用类型是否适用
在这里插入图片描述
由此可见,final修饰引用类型,我们可以对引用类型里的属性进行修改,但引用类型的地址不可以改变

方法参数

修饰参数则代表了该参数是不可改变的

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值