final的意思是,最后的,最终的。
final可以修饰类,属性,方法和局部变量
1.当用final修饰类的时候,那么这个类就不会被继承,当你不想该类被继承或者是被修改时,可以用final修饰。
final class Test{}
2.当你不想类中的某个方法在被其继承它的子类中覆盖\重写,那么可以用final修饰,这时这个方法可以被继承但是不能被重写。
class Test{
public final void A(){}
}
class Demo extends Test{
@Override
public void A(){
System.out.println();
}
}
//这样是会报错的
3.当不希望类中的某个属性被修改,同样可以用fianl修饰
final int i = 10;
final使用的注意事项和细节:
1.final修饰的属性又叫常量,一般用XX_XX_XX来命名
final double TAX_RATE = 0.08;
2.final修饰的属性在定义时,必须要赋值,赋值的位置有三种地方
第一种:直接在后面赋值,比如final double TAX_RATE = 0.08;
第二种:在构造器中赋值;
final double TAX_RATE;
public Test(){
TAX_RATE = 0.08;
}
第三种:在代码块中赋值;
final double TAX_RATE;
{
TAX_RATE = 0.08;
}
3.如果final修饰的属性是静态的,那么它就只能在定义时赋值或者静态代码块中赋值。就不能在构造器中赋值了。
4.final修饰的类不可以被继承,但是可以实例化对象。
5.如果类不是final类,但是其中有final方法,则该方法虽然不能被重写,但是可以被继承。
6.一般来说,如果一个类已经是final类了,那么其中的方法就没必要用final修饰了,因为该类不能被继承,那么其中的方法也就不会被重写了。
7.final不能修饰构造器
8.final和static往往搭配使用,效率更高,因为搭配使用时不会导致类的加载,仅仅是调用了这个属性,(底层编译器做了优化处理)。
9.包装类(Integer,Double,Float,Boolean等都是final类)String也是final类