final可以修饰类、属性、方法和局部变量,在以下情况下可能用到此关键字

1.当类不希望被继承时

2.当不希望父类的某个方法被子类覆盖或者重写时候

3.不希望类的某个属性的值被修改

4.当不希望某个局部变量被修改

package com.leo;

import com.leo.modifier.A;

public class Test {
    public static void main(String[] args) {

    }
}

// 如果我们要求A类不能被其它类继承
final class A {

}

//class B extends A {
//
//}

class C {
    // 如果要求类方法不能被其子类继承
     final public void hi() {}
}

//class D extends C {
//    @Override
//    public void hi() {
//        super.hi();
//    }
//}

class E {
    final public double TAX_RATE = 0.08;
}

// 当不希望某个局部变量被修改
class F {
    public void cry() {
        final double NUM = 0.01;
        // NUM = 1.2;
        System.out.println("NUM = " + NUM);
    }
}