Java继承五:final关键字作用简介;

本文深入解析final关键字在Java中的应用,涵盖修饰类、方法、变量的特性及限制,探讨final变量的不可变性及其对引用类型的影响,适用于Java初学者及进阶开发者。

(20210424补充:final修饰一个变量指向一个数组,只是代表这个变量不能更改引用指向,对象本身(即这个数组)是可以增加元素或者删除元素的。补充自(补充):数组;ArrayList(List);Arrays;Array(待补充);

1.final关键字作用简介

   修饰类,使类不能被继承;(如String类就是final修饰的)(子类继承父类的目的就包括,想完善、更改一下父类,被final修饰的类已经是不可更改的究极形态了,自然不能被继承,否则就有点违背Java的设计原则了)

   修饰(A类中的)方法:(B类继承A类)使得在B类中不能重写该方法,但B类对象依旧是可以调用该方法的;即子类可以继承父类中被final修饰的方法的;

注:final不能修饰构造方法(理所当然,如果可以修饰会莫名其妙)

   修饰变量:修饰的是方法内的局部变量时,就表示,定义的该值不能再被修改了,即该变量只能被赋值一次;对于这种变量可以先定义而不赋值,到使用的时候再赋值就行;

        修饰类中的成员属性:首先,如果在定义该成员属性时就初始化了(赋值了),那么在其他任何地方都不能再对该成员属性重新赋值;    其次,如果在定义该成员属性时没有初始化(只定义了变量而没有赋值),那么可以在构造代码块和构造方法中初始化。。。

注:这儿的深入理解,待以后。。。。

加:如果在定义该成员属性时没有初始化(只定义了变量而没有赋值),且是同时使用static和final修饰,那么可以在静态代码块中初始化;(见单例模式,懒汉式中,静态实例对象不能使用final修饰的场景)(20210707:如果在静态代码块中初始化final变量,那么为什么不在定义的final变量的时候就初始化嘞?所以,在静态代码块中初始化final变量,这有点自己给自己找麻烦的感觉。)


可以发现,Java的基本数据类型时可以直接赋值的;但对于引用类型的数据需要通过实例化的方式去构建这个对象,并且这个对象中还有很多属性值;

且final修饰基本数据类型的变量时,不能二次赋值;;那么当final修饰引用数据类型变量时,该引用类型的变量的引用地址是否可以改变,该引用类型变量里面的属性值是否可以改变呐?

事实是:引用地址不可以发生改变,其中的属性值是可以修改的;(这儿容易理解,final修饰哪个变量,哪个变量就已经是究极形态了,不可更改了)


如果,对于某个变量,我们既不希望其在程序中被修改,同时又希望其是作为全局变量而存在,那么可以同时用final和static去修饰限定。(这种变量可能根据业务需求,适合那种全局性性、不可改的变量)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值