final关键字的功能概述
1、final从字面上理解含义为“最后的,最终的”。
2、final可以用来修饰变量(包括类属性、对象属性、局部变量、形参),方法(包括类方法和对象方法)以及类。
1、用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且他的值不能再被改变。对于成员变量来说,我们必须在声明或构造方法中对它赋值。
1.1、final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。
1.2、不能够对final变量再次赋值。
1.3、接口中声明的所有变量本身是final的。
1.4、没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化”
1.5、按照Java代码惯例,final变量就是常量,而且通常常量名要大写
2、用来修饰方法参数,表示在变量的生存期间它的值不能被改变。
3、修饰方法,表示该方法不能被重写。(因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法。
因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。)
3.1、final方法不能被重写。
4、修饰类,表示该类无法被继承,即不能拥有自己的子类。
final类不能被继承。
1、final修饰类(谨慎使用)
当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
2、final修饰方法(如果不想被子类修改,谨慎使用为final方法)
使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。
注:类的private方法会隐式地被指定为final方法。
3、修饰变量是final用得最多的地方。
如果一个变量是常量,可以用final类修饰该变量。
如下图:不能够对final变量再次赋值。

总结:
final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为final类。 final方法不能被子类的方法覆盖,但可以被继承。 2、final方法 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。 使用final方法的原因有二: 第一、把方法锁定,防止任何继承类修改它的意义和实现。 第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。 3、final变量(常量) 用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。 另外,final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。 4、final参数 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。 注:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。 final不能用于修饰构造方法。
final关键字在Java中有着重要的作用,它可以修饰变量、方法和类。修饰变量时,确保其值不可改变,常用于定义常量。修饰方法则禁止重写,保证行为的一致性。修饰类则阻止继承,确保类的封闭性。使用final可以提高代码的安全性和效率,但也需要注意合理使用以避免过度限制。

9181

被折叠的 条评论
为什么被折叠?



