final主要用法:
修饰数据;修饰局部变量;修饰方法;修饰类。
1.用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。对于成员变量来讲,我们必须在声明时、构造方法或者初始化块中对它赋值
final修饰符
成员变量有两种,一种是静态成员变量,一种是普通成员变量
1.1普通成员变量
用final来修饰他 int intA=22;
intA他就不是变量了,类似于常量INT_A,这是一种命名规范final int INT_A=22;
final修饰的成员变量,赋值方式:初始化的时候给他赋值
final 类型的只能初始化一次,赋值一次,赋值完一次就不能再赋值了,final类型
public class FinalMemberVariables1 {
final int INT_A=22; 声明时赋值
final int INT_B; 在初始化块赋值
final int INT_C; 在构造器赋值
{
INT_B=22; 在初始化块赋值
}
public FinalMemberVariables1(){
INT_C=22; 在构造器赋值
}
1.2静态成员变量
final static String STR_A="4444"; 声明的时候赋值
final static String STR_B; 在静态初始化块赋值
static{
STR_B="33333";
}
}
final修饰成员变量 (实例变量和类变量(静态变量))---无法赋值(可以初始化)
只能赋值一次(相当于初始化变量)
初始化的意思就是给他第一次赋值,也就是只能赋值一次
因为是常量,常量一旦固定,就不能再给他修改了
2. 用来修饰局部变量,表示在变量的生存期中它的值不能被改变
final修饰局部变量----只能赋值一次(相当于初始化变量)
public void testMethod(final int num){
}
final类型的形参:形参是在调用这个方法的初值赋值的,去初始化的,在内部是不可以给他赋值的
不能对final修饰的形参赋值
3. 修饰方法,表示该方法无法被重写
public class F1 {
public void print(){
System.out.println("F1方法");
}
public final void F2(){
System.out.println("F2方法");
}
}
class abc extends F1{
public void print(){
System.out.println("F1方法");
}
下面的代码有错误,无法重写final修饰的方法
final修饰的方法是不能重写的
final修饰的方法是最终的,无法修改的
public final void F2(){
System.out.println("F2方法");
}
}
4.修饰类,表示该类无法被继承
public final class FinalClassDemo4 {}
以下语法错误,final修饰的类是不能被继承的,String
不是继承,是不能被继承,
如下,不能被D2继承
class D2 extends FinalClassDemo4{}
Class D3 extends String{ final修饰的类
}