最终修饰符
final修饰的 方法 可以和静态方法、普通方法重载
final可以修饰:属性,方法,类,局部变量(方法中的变量)
final修饰的 属性 的初始化可以在编译期,也可以在运行期,初始化后不能被改变
final修饰的 属性 跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值
final修饰的 属性 ,表明该属性是一个常数创建后不能被修改
final修饰的 方法参数 ,表示在变量的生存期中它的值不能被改变(方法参数中的final引用,意味着在该方法内部,我们不能改变参数句柄指向的实际东西,也就是说在方法内部不能给形参句柄再另外赋值)
final修饰的 方法 ,表示该方法在子类中不能被重写
final修饰的 类 ,表示该类不能被继承。
被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化
对于基本类型数据,final 会将值变为一个常数(创建后不能被修改);
对于对象引用(句柄),final 会将句柄变为一个常数(声明时,必须将句柄初始化到一个具体的对象,而且不能再将句柄指向另一个对象。但是,对象的本身是可以修改的。这一限制也适用于数组,数组也属于对象,数组本身也是可以修改的。)。
final只对引用的"值"(即内存地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化,final是不负责的。