Java final 关键字详解
具体如下,请看代码注释:
package com.example.demo.java;
/**
* final 修饰的类不可被继承,final修饰的方法不可被重写
* final 修饰的变量不可被改变;
* 写final 域的重排序规则禁止把final域的写重排序到构造方法之外
* 即:必须在构创建实例前赋初值;
*/
public class FinalTest {
private int a;
private final int b;
private final int c;
private final FinalTest finalTest = new FinalTest();
/** 构造代码快*/
{
c=10;
}
/**无参构造*/
public FinalTest(){
a = 1;
b = 10;
}
public void write(){
a = 2;
// b = 10; //放开编译报错 final 修饰的变量如果是基本类型,值不能被改变
//finalTest = new FinalTest(); final 修饰的变量如果是引用类型,引用地址不能被改变
finalTest.setA(11); //但是引用类型的属于可以被改变
}
private void setA(int a){
this.a = a;
}
private int getA(){
return this.a;
}
}