final代表了不能修改
final修饰域
1,构建对象时必须对final修饰的域进行初始化。
2,初始化之后不能再被修改
3,final一般用于基本数据类型域,或不可变类的域(如String)
4,对于可变类的域
Class Employee{ private final StringBuilder evalutions; Employee(){ evaluations = new StringBuilder(); } public void giveGoldStar(){ evaluations.append(LocalDate.now() + ":Gold Star "); } }
如上面代码所示,final只会表示存储在evaluations变量中的对象引用不会再指示其他StringBuilder对象。但这个对象可以更改.
final修饰类和方法
被final修饰的类不能定义子类,同时该类中的方法也被自动定义为了final,但其中的域不会被自动改为final
被final修饰的方法不能被子类覆盖
方法和类被声明为final的主要目的是:确保他们不会在子类中改变语义。(待补充,举例String类)