final 关键字
表示最终的、不可变得
可修饰类,方法,变量
修饰类
修饰的类无法被继承,不可进行拓展。
修饰方法
修饰的方法无法被覆盖
public class FinalTest{
public final void dosome(){
System.out.println("F‘s");
}
}
public class Child extends FinlTest{
public void dosome(){// 出现错误
System.out.println("C's");
}
}
修饰变量
final修饰的变量只能复制一次
【Tip】 和 cpp的const类似,但是const在声明的时候必须定义。而这里只要确保赋值一次就可以了。
如果修饰的是一个引用变量
此时保存的内存地址不能改变,但是内存地址指向的对象的属性等等可以修改。
也就是说,final修饰的变量不能被重复new。
修饰实例变量
final 和 static 联合修饰的值为常量
常量 和 final的区别在于,final修饰的实例变量存储在堆中,每个实例都有单独的存储内存。这样会导致内存的浪费。所有static final 联合修饰。