在Java中,final关键字可以用于修饰类、方法和变量。它的作用取决于它所修饰的内容。
特征: 凡事引用final关键字的地方皆不可修改
1.修饰类:表示该类不能被继承,即为最终类。子类就无法复用父类的方法和属性,而只能通过组合或代理的方式来使用父类的功能。final类中的成员变量可以根据需要设为final,但是注意final类中的所有成员方法默认被指为final方法。
public final class 类名{}
2.修饰方法:表示该方法不能被子类重写,即为最终方法。子类就无法改变该方法的行为,从而保证了程序的稳定性和安全性。但是,该方法仍可以被继承。方法一旦被final修饰之后,在普通的类中没有影响。但是在父类中,方法添加final修饰,其子类无法重写这个方法。
public final 返回值类型 方法名 (参数列表){
//方法体
}
3. 修饰变量:表示该变量为常量,只能被赋值一次。一旦变量被赋值后,它的值就不能再被修改了。通常用 final 修饰的变量被称为常量,常量的命名一般全部使用大写字母。常量在声明的时候必须进行赋值!!常量声明是位置没有限制,可以放在类里,也可以放方法里面,实际应用中,一般把常量放在类中。
当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。
引用变量被final修饰之后,虽然不能再指向其他对象,但是他指向的对象的内容是可变的。
4.修饰参数:在方法内参数不允许再对其进行修改。但是针对引用类型和基本数据类型的限制不一样。修饰基本类型不可以在方法内修改。修饰引用类型主要可以更改内容,不能修改地址。map类型与list类型相似,可以更改内容,不能变其地址。string与map、list类似,不可以更改地址,修改string内容是也会更改地址,所以用final修饰的string类型变量无法重新赋值。
public 返回值类型 方法名(final 数据类型 参数名){
//方法体
}