Java笔记

Java_final修饰符

2018-04-25  本文已影响0人  Ethan丶Xiao

final关键字的使用场景

final关键字可以修饰类、方法和变量;

final修饰变量:

表示该变量一旦获得初始值之后便不能被改变;final可以修饰成员变量(包括类变量和实例变量)也可以修饰局部变量,形参;(final修饰的变量不能被重新赋值是错误的,严格的说法是,final修饰的变量不能被改变)

与其他成员变量不同的是,final修饰的成员变量(包括实例属性和类属性) 必须由程序员显示初始化,系统不会对final变量进行隐式初始化; 当如果需要在初始化代码块 构造器中对final变量进行初始化,则不要在初始化之前就访问成员变量的值;

final修饰局部变量

系统不会对final修饰的局部变量进行初始化,必须进行显示的初始化,所以,final修饰的成员变量可以进行一次的赋值,不能进行重复的赋值;

final修饰的形参:

因为在系统调用该方法时,系统根据传入的参数来完成初始化,所以使用final修饰的形参不能被重新赋值;

final修饰的基本类型与引用类型

当final修饰基本类型变量时,不能被重新赋值,所以基本数据类型不能被改变;

但对于引用类型变量来说,保存的仅仅是一个引用,final只能保证这个引用的地址不能被改变,即一直引用同一个对象,但这个对象完全可以改变;

final修饰的方法

final修饰的方法不能被重写,所以不希望子类重写父类的某个方法,可以使用final修饰该方法;

如果使用final修饰一个带有private修饰符的方法,那么依然可以在子类中定义与该方法具有相同方法名 相同返回值 相同形参列表的方法;

final修饰的方法只是不能被重写,但可以被重载;

final修饰的类不能有子类,为了保证某个类不能被继承,可以使用final修饰起来;


final关键字的具体使用

继承关系的最大弊端就是破坏封装;子类可以访问父类的实现细节,而且可以通过方法的覆盖的形式修改实现细节;

final本身的含义为“最终的,不可变的”;可以修饰类、方法、变量;构造器不能使用final修饰;

final修饰的类:表示最终的类,不能再有子类;

final修饰的类需要满足以下条件

1):某类不是专门为继承设计的

2):处于安全考虑,类的实现细节不许变动

3):确信该类不会被拓展

final修饰的方法:称为最终方法,该方法不能被子类覆盖;

什么时候使用final修饰方法

1):在父类中提供的统一算法,不准子类通过方法覆盖来修改,此时使用final修饰;

2):在构造器中调用的方法(初始化方法),此时一般使用final修饰;

(final修饰的方法,子类可以调用,但不可覆盖)

final修饰的变量:最终的变量,表示常量;该变量只能赋值一次,不能再赋值;

final是唯一可以修饰局部变量的修饰符

1):final变量必须显示的指定初始值,因为系统不会为final字段初始化;

2):final变量一旦赋初始值,就不能重新赋值;

3):常量命名规范:单词全部使用大写字母,如果是多个单词组成,单词之间使用下划线隔开;

final修饰的引用类型变量表示的是该对象的引用地址不能改变,但是里面的内容可以改变;


上一篇 下一篇

猜你喜欢

热点阅读