final 是java 的一个关键字,表示最后的,不可变的。用于修饰类,变量,方法。
final修饰类
final修饰类的时候,表示类是不可变的,不能被继承的。
public final class A{
}
//这么写会直接编译器报错,不能编译
public class B extend A{
}
final修饰方法
final 修饰方法的话,代表这个方法已经是最后一个版本了,这个方法不能被子类覆盖,重写。
public class A{
public void m1(){}
}
public class B extend A{
@Override//这么写直接报错的,不能编译,子类不能覆盖父类的final方法。如果去掉@Override是没问题的。这样的话就是在子类重新定义一个m1方法
public void m1(){}
}
final修饰变量
可以修饰实例变量,类变量,和方法的参数变量。
如果变量是基础类型的话,那么这个变量是不可改变的。
如果变量是引用类型的话,那么这个变量的引用是不可改变的。
final int i = 1;
final Object b = new Object();
public void t(){
// i = 2;
// b = new Object();
int j = i+2;
}
public void t(int k,final int l,final Object m){
k = 2;
// l = 1;
// m = new Object();
final int o = 1;
// o = 2;
}
final的方法和变量都是编译的时候就已经生成在字节码里面了。所以使用的时候就会获取得特别快。效率比较高。
网友评论