关于final的一些细节,我有话要说——深入理解final3

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

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

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

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

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

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

👋final的深入了解

🤘深入了解修饰方法

我们从基本使用中,知道了被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 "我只能同意你的看法,湖人总冠军!!!";
//    }
}
复制代码

可以看到我们是不能对被final修饰的方法进行重写。

重载: 那么重载呢?我们对MethodFinalTest类里的saySomething方法进行重载试试?

public class MethodFinalTest {
​
    // final修饰saySomething()方法
    public final String saySomething(){
        return "你想说点啥,湖人总冠军!!!";
    }
​
    // final修饰saySomething()方法
    public final String saySomething(String name){
        return "我只说5个字,湖人总冠军!!!" + name;
    }
​
    // 没有被final修饰talkSomething()方法
    public String talkSomething(){
        return "我想说啥,老年夕阳红,快点红一把吧!!!";
    }
}
复制代码

可以看到,被final修饰的方法对重载没有任何抵抗力,是可以进行重载的。

🤟深入了解修饰类

我们从基本使用中,知道了被final修饰的类是不可以被继承的,那么我们对于那些类才会使用到final关键字呢?这样说,什么场景才能被使用到!

对于类来说,它是可以被子类随意继承被重写父类里面的方法或者改变父类的属性,这就会导致一定的安全隐患。就好比你现在的资本资金有100W,你每天会花1000左右,但是因为你可以被继承,这导致了你资金的流失的效果加速了,导致了你的资金不安全了!

(对于我,好像不会有这种问题呀!手里只有几块钱???)

所以对于安全性,是我们考虑点!如果当一个类不希望被继承时,那我们就可以使用final来修饰。

而对于我们常使用String类,它就是被final修饰的,它最主要原因就是安全性,因为,一旦你能够继承它并重写里面的方法,那可能会导致整个系统异常不安全。还有就是为了高效,并且在当只有字符串不可变的时候,我们才能实现字符串常量池,字符串常量池可以为我们缓存字符串,提高程序的运行效率。

🌸总结

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

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

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

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

\