关于final的一些细节,我有话要说2

「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战」。

茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!

愿你在未来的日子,保持热爱,奔赴山海!!

题记:关于final关键字,它也是我们一个经常用的关键字,可以修饰在类上、或者修饰在变量、方法上,以此看来定义它的一些不可变性!

像我们经常使用的String类中,它便是final来修饰的类,并且它的字符数组也是被final所修饰的。但是一些final的一些细节你真的了解过吗?

从这篇文章开始,带你深入了解final的细节!

🙆 final的基本使用

首先你必须知道final如何去使用,才能更加深入的去了解它,剖析它。

final关键字的使用以下有三种特点:

  1. 如果一个类被声明为 final,意味着它不能再派生出新的子类,即不能被继承。
  2. 将变量声明为 final,可以保证它们在使用中不被改变。但是,被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。
  3. 被声明为 final的方法也同样只能使用,不能在子类中被重写。

🙋 修饰变量

将变量声明为 final,可以保证它们在使用中不被改变。但是,被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。

package com.nz.test;
​
/**
 * 测试final修饰变量!
 */
public class VariableFinalTest {
    // 在被final修饰的变量,必须进行初始化操作。
    private final int variable;
​
    public static void main(String[] args) {
        final int num = 2;
        // 被final修饰的基本变量,表示不可再修改。
        num = 3;
​
        final Object obj = new Object();
        // 被final修饰的引用变量,也表示不可再修改。
        obj = new Object();
    }
}
复制代码

我们可以看出,在未初始化变量、初始化后进行修改的变量的值、重新引用新的引用地址时,均编译期间爆红,都会报错滴!

🙇 修饰方法

被声明为 final的方法也同样只能使用,不能在子类中被重写。

对于那些你认为一个方法的功能写得已经足够完善了,子类中也不需要定义改变的话,你可以声明此方法为finalfinal修饰的方法比非final修饰的方法要快一点,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定!

具体我们来看看是否真的不能重写

package com.nz.test;
​
/**
 * 测试final修饰方法!
 * 该类为父类,在子类继承该类时,看是否能不能重写final方法
 */
public class MethodFinalTest {
​
    // final修饰saySomething()方法
    public final String saySomething(){
        return "你想说点啥,湖人总冠军!!!";
    }
​
    // 没有被final修饰talkSomething()方法
    public String talkSomething(){
        return "我想说啥,老年夕阳红,快点红一把吧!!!";
    }
}
​
// 定义子类继承MethodFinalTest方法
class MethodSun extends MethodFinalTest{
​
    // 首先,看看能否重写未被final修饰的talkSomething()方法
    public String talkSomething(){
        return "我只能同意你的看法,老年夕阳红,快点红一把吧!!!";
    }
​
    // 接着,看看能否重写被final修饰的saySomething()方法
    public String saySomething(){
        return "我只能同意你的看法,湖人总冠军!!!";
    }
}
复制代码

我们可以看到,我们没有talkSomething是没有被final修饰的,可以完美的重写过来,但是我们的saySomething方法被final修饰后,就不能被重写啦!

🌸总结

相信各位看官都对final这一个关键字有了一定了解吧,其实额外扩展自己的知识面也是相当有必要滴,不然别人追问你的时候,你会哑口无言,而一旦你自己每天都深入剖析知识点后,你在今后的对答中都会滔滔不绝,绽放光芒的!!!对吧,我们还有一把东西等着我们探索和摸索中!那我们继续期待下一章的final的内容吧!欢迎期待下一章的到来!

让我们也一起加油吧!本人不才,如有什么缺漏、错误的地方,也欢迎各位人才大佬评论中批评指正!当然如果这篇文章确定对你有点小小帮助的话,也请亲切可爱的人才大佬们给个点赞、收藏下吧,一键三连,非常感谢!

学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!

感谢各位看到这里!愿你韶华不负,青春无悔!

\