final关键字
1.基本介绍
1,final可以修饰类,属性,方法和局部变量
2,final修饰的类不能继承,可以初始化
3,final修饰的方法子类不能重写
4,final修饰的属性又叫常量,不能修改且必须有初始值。
- 非静态初始化:直接定义,构造器,代码块
- 静态初始化:直接定义,静态代码块
5,final不能修饰构造器
**6,
**final和static搭配使用效率会更高,调用的时候不会使类加载。底层编译做了优化处理。
/**
* final使用
*/
public class Final01 {
public static void main(String[] args) {
System.out.println(C.i); //输出10,不会导致类架加载
}
}
//不被继承
//final class A{
//}
class A{
//不希望局部变量被修改
// 1,直接初始化
// private final double TAX_RATE = 0.01;
private final double TAX_RATE;
//2,初始化在构造器
// public A(double TAX_RATE) {
// this.TAX_RATE = TAX_RATE;
// }
//3,初始化在代码块中
{
TAX_RATE = 0.01;
}
//不希望被子类重写
final void say(){}
}
class B extends A{
//1,直接定义
// private final static double TAX_RATE = 0.02;
private final static double TAX_RATE;
//静态代码块初始化
static {
TAX_RATE = 0.02;
}
}
class C{
public final static int i = 10;
static {
System.out.println("C类不会加载");
}
}