在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
在使用匿名内部类的时候可能会经常用到final关键字
Java中的String类就是一个final类
/*final 修饰 类*/
当用final修饰一个类时,表明这个类不能被继承
final类中的所有成员方法都会被隐式地指定为final方法
在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用
来继承或者出于安全的考虑,尽量不要将类设计为final类
/*final 修饰 方法 */
如果不想让本类的方法被覆盖,则可将方法定义为 final
/*final 修饰 变量*/
final 用的最多的还是用来修饰变量,
final 修饰的变量有两种:
1、修饰基本数据类型的变量,则变量的数值一旦被初始化后便不能更改,
可以当成一个常量来使用
2、修饰引用数据类型的变量,则在对其初始化后便不能再让其指向另一个对象
//举例:
class Man {
private final int i = 0; // i 相当于常量
public Man() {
//! i = 1; //i被final修饰,不能再被赋值
final Object obj = new Object();
//! obj = new Object(); //obj被final修饰,不能再改变引用的指向
}
}
/*
总结:
final修饰 类的成员变量时,必须在定义是或构造器中进行初始化赋值
final修饰的引用变量,虽然不能再指向其他对象,但是,它指向的对象的
内容是可变的
匿名内部类(是局部内部类)只能访问其所在方法中的final变量,因为:
匿名内部类不会随着定义的方法的弹栈而销毁,将局部变量声明为final,就会在
内部类中得到一份变量的拷贝,这份拷贝不会再变化。
*/ |
|