java——类——final
来源:互联网 发布:数据库事务的原理 编辑:程序博客网 时间:2024/06/08 14:59
final
final意思是不可修改,类似于c++中const,但final应用范围比const广,final可修饰范围包括:
- 数据对象
- 方法成员
- 类
修饰数据对象
final修饰数据对象意义同const,final可修饰数据对象包括:
- static数据成员对象
- non-static数据成员对象
- 方法参数对象
- 方法局部对象
blank final
一般来说,final修饰数据对象都显式初始化,这样final数据对象就含自定义初始值,没有显式初始化的final数据对象称为blank final数据对象:
- non-blank final数据对象:显式初始化
- blank final数据对象:无显式初始化
blank final除了继承non-blank final的不可修改含义,在初始化上做了一些限制,没有显式初始化的blank final数据对象毫无意义
- blank final static数据成员对象:final static数据成员对象必须在定义处显式初始化,否则编译error,因此不存在blank final static数据成员对象
- blank final non-static数据成员对象:必须在所有构造函数初始化(如果类含多个构造函数),确保实例对象构造完毕后,blank final non-static数据成员对象完成显式初始化(blank final non-static数据成员对象只能初始化一次,第一次”=“为初始化,之后”=“为赋值运算符,违背final不可修改含义)
- blank final 方法参数对象:方法参数对象值在方法调用时通过实参(默认实参)传递,因此必然含自定义初始值,因此不存在blank final方法参数对象
- blank final 方法局部对象:要求在方法作用域内如果被引用就必须含自定义初始值,因此blank final方法局部对象在引用之前必须初始化,规则同non-static数据成员对象(只能初始化一次,第一次”=“为初始化,之后”=“为赋值运算符,违背final不可修改含义),如果blank final方法局部对象不会被引用,可不初始化(blank final方法局部对象不会被引用,则该对象本身是冗余的,应删除)
修饰方法
final可修饰方法:
- static方法
- non-static方法
final修饰方法表示对应方法不能被子类override,阻止final方法多态行为,因为子类无法override final方法,因此final方法编译期bind(通过对应类引用调用final方法)
注:static方法本身编译期bind,因此final修饰static方法意义不大,但final static方法仍可阻止子类override
final修饰方法规则:
- private方法本身就不可能被子类覆写,因此final修饰private方法无意义,尽管语法上可这么做
- final不能修饰abstract method,因为abstract method天然要求子类override abstract method
- final不能修饰interface method,因此interface method天然要求子类override interface method
修饰类
final修饰类表示该类不能被继承,阻止子类改变final类行为,final类本质就是类所有方法为final方法(构造函数除外)
final修饰类规则:
- final不能修饰abstract class,因为abstract class包含abstract method,abstract method天然要求子类override abstract method
- final不能修饰interface,因为interface包含interface method,interface method天然要求子类override interface method
阅读全文
0 0
- final方法、final变量、final类、final对象—Java
- java——final
- Java关键字—final
- java——类——final
- Java杂记——final
- java——final关键字
- java关键字——final
- java——final关键字
- Java——关键字final
- JAVA——final关键字
- java 语法 —— final
- Java——Final关键字
- java基础——final
- Java基础—关键字final
- 谈谈JAVA关键字—final
- 【Java基础】——之Final
- Java基础知识——final关键字
- java——final、finally、finalize
- 1118. Birds in Forest (25)
- ubuntu 12.04 安装Docker 实战
- STM32 ST-LINK Utility解决错误提示“Can not read memory!Disable Read Out Protection and retry”
- 30. 完成sort函数,实现:按照成绩从高到低的顺序输出各学生的信息。
- ISO8583报文协议
- java——类——final
- 权限列表
- 安卓高级控件3之RecyclerView的使用
- caffe-windows 训练mnist数据集
- 安卓之高级控件Listview的优化
- 单选框RadioGroup,单选按钮RadioButton的使用
- iOS 内购详解
- 多线程(4)控制线程
- 服务器维护过程中踩过的坑儿