java——Final修饰成员变量的注意事项
一.Final 修饰成员变量的注意事项
- final修饰成员变量,该成员变量必须在创建对象之前进行赋值,否则编译失败
- final修饰成员变量,固定的不是成员变量拥有的默认值,如果固定的是默认值,那么将导致被final修饰的成员变量的值永远无法修改,只能是默认值,这也不符合语法规则
- 成员变量的赋值有三种实现方式:
- 定义成员变量的时候手动赋值
- 利用构造器对成员变量进行赋值
- 利用set函数进行赋值(也即利用一般的方法进行赋值)
4.被final修饰的成员变量,只能拥有3中所描述的赋值方法的1,2。
3为什么不行?
解释:如1所描述,被final修饰的成员变量必须在对象创建之前进行赋值,如果方法3可以,那么我们知道对象创建后,才能调用方法3,也就是说成员变量利用方法3进行赋值,会导致成员变量的赋值发生在对象创建之后
5.为什么被Final修饰的成员变量必须在对象创建之前进行赋值?
理解:
被final关键字修饰的东西有一个特点,那就是一旦被修饰,那么它的值也就终生不变,可见final关键字起到了固定的作用,既然起到固定那么,你就要提前告诉final固定的是谁,如果允许被final修饰的成员变量赋值发生在对象创建之后,那么对象创建完成后final固定的值还是未可知的
6.final修饰成员变量和final修饰局部变量的区别与联系:
1.被final修饰的成员变量与局部变量均具有:一旦赋值,该值就终身不变
2.被final修饰的成员变量必须要在创建对象之前进行赋值,否则会编译失败,
但是局部变量可以不赋值,但是没有被赋值的局部变量不能够被使用,一旦被使用就会编译失败
3.综上:一旦决定使用final关键字来修饰成员变量或者局部变量,一定要做到提前赋值
二.Final修饰成员方法:
1.final修饰成员方法,该成员方法就不能被子类重写,但是仍然可以被子类继承并可以通过子类对象调用该方法
三.Final修饰类
1.final修饰类,该类便不能被其他类继承,但是该类仍然能够创建对象,并且,可以利用该对象调用该类的成员变量或者成员方法
四.Final使用范围:
Final关键字可以修饰类,类的成员变量,类的成员方法,成员方法的局部变量,等等,
但是final关键字不能用来修饰构造方法:(原因)
理解:final修饰普通方法,将导致子类无法重写该方法,而构造方法本身就不能够被子类重写,故如果用final修饰,如同多此一举
相关文章
- 《Java 7并发编程实战手册》第六章并发集合
- Java基础语法(第1章变量)
- Java实现 LeetCode 781 森林中的兔子(分析题)
- Java实现 洛谷 P1036 选数
- java实现第三届蓝桥杯源码变换
- java实现第六届蓝桥杯切开字符串
- Java实现 蓝桥杯 算法训练 前缀表达式
- (Java实现) 洛谷 P1387 最大正方形
- Java中内部类中使用外面变量为什么final修饰?
- Java 应用压测性能问题定位经验分享
- Java虚拟机详解05----垃圾收集器及GC参数
- Java知识回顾 (18)Java 8、9、11的新特性
- atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc 艾提拉总结 attilax总结 1.1. 修改此java文件,让他启动编译,还是不能生成了新的class,1 1.2. 查
- atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
- atitit.web的动态include 跟变量传递 java .net php
- java基础(static---静态方法和静态变量以及静态方法)
- Java类的初始化顺序(静态变量、普通成员变量、静态代码块、构造方法的执行顺序);static静态代码块执行时机
- Java学习路线-60:spring 整合 mybatis
- Java并发编程:volatile关键字解析
- java变量使用的注意事项
- Java基本数据类型,Java基本变量类型
- java链接到mysql
- 基于Java+SpringBoot+Vue前后端分离书店购书系统设计与实现(有视频教程)
- 【Java类与对象】类的构造方法、静态变量常量、类的主方法、
- 关于Java成员变量、局部变量、方法,在JVM的内存空间分配
- 配置windows的java path变量