final 关键字

为什么要使用final 修饰符:

继承关系最大弊端是破坏封装:子类能访问父类的实现细节,而且可以通过方法覆盖的形式修改实现细节。
--------------------------------------------------------------
多个修饰符之间是没有先后关系的。public static final/static final public 等。
----------------------------------------------
final本身的含义是: 最终不可以修改的,它可以修饰非抽象类,非抽象方法和变量。
注意: 构造器不能使用final修饰,因为构造方法不能被继承,肯定是最终的。
---------------------------------------------------------------------
final修饰的类: 表示不能再有子类。
只要满足以下条件就可以把一个类设计成final 类:
(1)某种不是专门为继承而设计的。
(2)出于安全考虑,类的实现细节不许改动,不准修改源代码。
(3)确信该类不会再拓展。

-----------------------------------------------------
在Java里final修饰的类很多,比如八大基本数据类型,保证类 和 String等。
-----------------------------------------------------------------------
什么时候的方法需要使用final修饰
(1):在父类中提供统一的算法骨架,不准子类通过方法覆盖来修改,此时使用final修饰,模板方法设计式。
(2):在构造器中调用的方法(初始化方法)。此时一般使用final。
注意: final修饰的方法,子类可以调用,但是不能覆盖。

*******************************************************
final修饰的变量: 表示常量,只能赋值一次,不能再赋值。
final是唯一可以修饰局部变量的修饰符。
(1): final变量必须显示的指定初始值,系统不会为final字段初始化。
(2):final变量一旦赋予初始值,就不能被重新赋值。
(3): 常量的命名规范: 常量名符合标识符,单词全部使用大写字母,如果是多个单词组成,单词间使用下划线隔开。
如: int 类型的最大值: final int MAX_VALUE = 2的31次方。
问题:final修饰的引用类型变量到底表示引用的地址不能改变,还是引用空间中的数据不能改变?
答: final修饰基本类型变量:表示该变量的值不能改变,既不能用 “=” 号重新赋值。
final修饰引用类型变量: 表示该变量的引用不能变,而不是引用地址里的内容不能变。
-------------------------------------------------------------------------------
final是唯一可以修饰局部变量的修饰符,目的:局部内部类只能访问final修饰的局部变量。
什么时候使用常量:
当在程序中,多个地方使用到共同的数据,且该数据不会改变,此时我们专门定义全局常量。
一般开发中: 会专门定义一个常量类,专门用来储存数据。

--------------------------------学习笔记。

原文地址:https://www.cnblogs.com/hello-dummy/p/9164426.html