final:最终的,确保使用前是被赋值得,一旦赋值后不可修改。
1 数据
①局部变量
基本数据类型:
可以先定义后赋值,但要保证在使用前是已被赋值的,一旦赋值后不可修改;
引用数据类型:
可以先定义后赋值,但要保证在使用前是已被赋值的,一旦赋值后不可修改;
引用内容不可修改,但备用用的对象内容可以被修改;
②成员变量
必须保证成员变量在使用前被赋值;
成员变量赋值的方式有两种,1声明变量时赋值,2构造函数中赋值;
public static void main(String[] args) { //局部变量 //①基本数据类型 final int val;//先定义 // val = val + 1;//报错没有赋值,无法使用 val = 7 ;//再赋值 //②引用数据类型 final Score score = new Score("Jack",98,95,90); score.toString(); //score = new Score("Tom",77,89,99);//引用无法再次修改 score.name = "Tom"; score.toString(); }
2 方法参数
在方法参数上做 final 修饰后,整个方法体内参数值不允许被改变。
public Score(final String name,int yuWen, int shuXue, int yingYu) { //name = "jack";//报错 this.name = name; this.yuWen = yuWen; this.shuXue = shuXue; this.yingYu = yingYu; }
3 方法
在方法上做 final 修饰后,被继承的子类无法覆盖此方法,可以被继承。
不可以修饰构造方法。
3 类
在类上做 final 修饰后,此类不允许被继承。
违背了面向对象编程中的 “ 继承 ”