final关键字可以用来修饰变量,方法和类,请见以下详解:
**1.**final修饰基本数据类型,初始化之后不允许再次赋值。
/**
* final修饰基本类型变量
*/
@Test
public void finalBaseVariable() {
final String finalBaseVariable = "基本数据类型";
final_variable = "重新赋值";//编译失败
}

/**
* final修饰引用类型变量
*/
public void finalReferenceVariable() {
final List<String> finalReferenceVariables;//引用类型
finalReferenceVariables = new ArrayList<>();
finalReferenceVariables.add("指向的对象的内容是可以修改");
finalReferenceVariables = new ArrayList<>(2);//引用类型赋值之后再次赋值,就会编译失败
}

/**
* 在父类中定义final修饰方法
*/
class FinalMethodParent {
public final void final_Method() {
System.out.println("父类定义final方法");
}
}
/**
*子类试图重写父类final方法
*/
class FinalMethodSubClass extends FinaleTest.FinalMethodParent {
@Override
public void final_Method() {//不允许被子类重写,编译失败
System.out.println("子类试图重写父类的final方法");//编译失败
}
}

/**
* 继承java中String,String类被final关键字修饰
*/
class FinalClass extends java.lang.String {////编译失败
}

