final:最终,作为一个修饰符。
1. 可以修饰类、函数、变量。
2. 被final修饰的类不可以被继承。
为了避免被继承、被子类复写的功能。
继承的优点:提高了代码的复用性;提供了多态的前提。
继承的缺点:打破了封装性。
3. 被final修饰的方法不可以被复写。
4. 被final修饰的变量是一个常量,只能赋值一次。
(1)既可以修饰成员变量,又可以修饰局部变量。
(2)当在描述实物时,一些数据的出现值是固定的。这时为了增强阅读性,都给这些值起个名字方便于阅读。而这个值是不需要改变的,所以加上final修饰。
(3)常量的书写规范:所有字母都大写,如果由多个单词组成,单词间通过_连接。
5. 内部类定义在类中的局部位置上时,只能访问该局部被final的局部变量
为什么局部内部类和匿名内部类只能访问final的局部变量?
追究其根本原因就是作用域中变量的生命周期导致的:
- 内部类和外部类是处于同一个级别的,内部类不会因为定义在方法中就会随着方法的执行完毕就被销毁
- 当外部类的方法结束时,局部变量就会被销毁了,但是内部类对象可能还存在(内部类对象访问了一个不存在的变量)
- 为了以上问题,就将局部变量复制了一份作为内部类的成员变量
- 将局部变量复制为内部类的成员变量时,必须保证这两个变量是一样的;通过将局部变量设置为final来解决