final关键字的使用

final关键字

最近在回顾java基础,仔细研究了一下final的使用,以前使用final的时候,感觉没有一种规矩感,只是觉得这个地方不变,哎,可以声明为final,总好像是为了用final而套用final,今日闲下心来,仔细分析了以前的代码,思考过后总结了一下关于final的使用

final的语义:最终的,终态的

final可以修饰类,方法,变量

1.final修饰类

在设计类的时候,如果该类不需要拥有子类,不想被继承,也不需要被扩展类内部设计细节比较完美,直接可以拿来用,比如某些工具类,可以将其声明为final类型。由于不能被继承,则该类中的成员方法是不可以被覆盖的,默认都是final类型,即final类中所有方法都是final类型。所以将一个类声明为final类型,考虑以下方面:
- 此类设计功能比较完全,不需要以后扩展
- 该类不需要被继承

2.final修饰成员方法

在一个类中,该类是可以被继承的,但是其中的某个方法不想被子类扩展的话,比如认为这个方法设计已经比较完美了,则将该方法声明final类型。该类被继承之后,此方法不可以被子类重写但是可以重载。重写与重载的区别为:重写为子类重新编写父类中允许被重写的方法,而重载一般在同一个类中,对同一方法可以有不同的实现方法。所以将一个方法声明为final主要有以下几个原因:
- 不希望后继者破坏已经近乎完美的方法,使原始设计失去了本来应有的意义。
- 通常final方法比非final方法快,因为final方法在编译时静态绑定,不需要在运行时动态绑定,因此提高了性能
- 假若方法确定不会被继承,那么最好声明为final类型,以此提高性能

3.final修饰成员变量

将一个变量声明为final类型后,那么此变量将不能被改变!此变量就变成了常量。注意:变量不变指:变量的引用不能发生变化,但是引用指向的内容是可以变化的! final一般大多用在修饰成员变量上,常常与static一起使用,将变量声明为全局常量。因此应多加注意。以下为几个使用时要明白的注意事项:
-final变量必须在声明时初始化或者先声明然后在构造器中进行初始化,没有初始化则会引起编译错误
-不可以对final变量再次赋值!
-一般变量声明为final后,最好用大写,便于区分
存在一种变量为final空白,即变量声明后不进行初始化,而在构造函数中由使用者自动填入初始值进行初始化,这样极大提高了灵活性,即实现了变量的不可更改性,同时又能保证不同使用者的灵活及方便,达到了既变又不变的境界。

了解了以上内容后,就会基本熟悉final的使用情况,方便我们写出更好的代码

自己知识简陋,仅以上考虑,若有错误以及不足之处,欢迎指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值