Java关键字有“这是无法改变的”或者“终态”的含义,他可以修饰非抽象类、非抽象成员方法和变量
一、首先说一下final类:
final类不能被继承、没有子类,final类中的方法默认都是final的。
原因在于final就有终态的意思了,而继承有着进化的意思,是子类继承父类是在父类的基础上进行拓展延伸。所以final类不能被继承。
二、final方法
final方法不能被子类的方法所覆盖,但可以被继承。
使用final方法的原因有两个
(1)、把方法锁定,防止任何继承类修改他的意义和实现
(2)、高效,编译器在遇到调用final方法时会转入内嵌机制,大大提高执行效率。
三、final变量
final成员变量表示常量,只能被赋值一次,赋值后值不在改变。
final修饰的变量有三种:静态变量、实例变量、局部变量,分别表示三种类型的常量。
final对于常量来说意味着值不能改变,例如final i =100; 那么这个i的值永远都是100.
使用filal关键字修饰一个变量的时候,是指引用的变量不能变,引用变量所指向的对象中的 内容还是可以改变的。例如 如下语句:
final StringBuffer a=new StringBuffer("aaa");
执行如下语句的时候将报编译器错误:
a=new StringBuffer(""); 因为它将变量指向的内存地址改变了 而final修饰的变量恰恰是不可改变变量所指向的内存地址。
但是,执行如下语句则可通过编译:
a.append("bbb"); 因为他只是将指向对象的内容改变了 ,而没有改变该变量所指向的内存地址。
关于final修饰变量的理解 最简单的例子就是:我有一个老婆叫XXX,我老婆就是XXX了,这个人是不能变的,但是我老婆的身高和体重是可以改变的。
四、final参数
当函数的参数为final类型的 参数的时候你可以读取使用该参数,但是无法改变该参数的值。