Java中的final修饰符
来源:互联网 发布:手机查看淘宝注册时间 编辑:程序博客网 时间:2024/05/17 04:49
(一)final可以修饰变量、方法、类
(二)final修饰的变量
1)被final修饰的变量叫做常量
2)不可变量,即不允许二次修改值。
3)一定要显式地给定初值。
①为什么强调“显式”呢?因为类的实例变量和静态变量在不给初值的情况下,有默认的初始值,例如:int类型的变量的默认初始值为0。但是final修饰的变量必须要显式地给定初值,不然编译出错。
②final变量必须显式给出初值,并且一旦给定,不允许再次修改。
(三)在哪里为final变量赋初值呢?
1)对于实例变量,有3个位置可以赋值。必须要在其中一个位置进行赋值,如果这3个位置都没赋值,编译无法通过。
①声明final变量时直接赋值。示例:final int age=20;
(最简单,最常用的方式)
②构造函数中赋值。示例:
public class Demo1 { final int age; public Demo1(int age1){ age=age1;//在构造函数中为final变量赋值 }}
③在非静态代码块中赋值。示例:
public class Demo1 { final int age; { age=20;//在非静态代码块中为final变量赋值 }}
2)对于静态变量,可以在2个位置进行赋值。可想而知,静态变量不可能在构造函数或者非静态代码块中赋值。
①声明final变量时直接赋值。示例:final static int age=20;
(最简单,最常用)
②在静态代码块中赋值。示例:
public class Demo1 { final static int age; static{ age=20;//在静态代码块中赋值 }}
3)对于局部变量,final修饰的局部变量一旦被赋初始值,将不能再次赋值。如下图:
(四)final修饰的方法
1)final修饰的方法不能重写,用于限制该方法不能被子类重写
2)如果子类和父类在同一个包下,子类无法重写父类的private方法,但是可以重写父类的public、package、protected的方法。除此之外,子类无法重写父类的final方法
3)如果子类和父类不在同一个包下,子类无法重写父类的private、package方法,但是可以重写父类的public、protected的方法。除此之外,子类无法重写父类的final方法
4)final方法不能被子类重写,abstract方法需要被重写,因此final和abstract不能同时修饰一个方法
5)private和final同时修饰某个方法是没有太大意义,但是被Java语法允许。使用public final修饰方法,子类虽不能重写,但是子类能继承并访问该方法。但是使用private final修饰方法,子类既不能重写,又不能访问,显然毫无意义
(五)final修饰的类
1)final修饰的类不能被继承,限制该类被继承
2)final和abstract不能同时修饰某一个类。道理很简单,final不允许继承,abstract需要被继承,二者显然冲突了。如下图:
- Java中的final修饰符
- java 中的 final修饰符
- Java中的final修饰符
- Java中的final修饰符
- java中的final修饰符
- Java中的final修饰符
- java中的final修饰符
- Java中的abstract,static,final修饰符
- Java中的abstract,static,final修饰符
- java中的修饰符static/final/abstract/
- java中的修饰符final和static
- Java Final修饰符
- Java final 修饰符
- Java final修饰符
- java修饰符:final
- java final 修饰符
- Java-final修饰符
- java修饰符final
- POJ 2115 C Looooops <扩展欧几里得算法>
- Java 处理 JSON
- 20170725
- MyBatis配置文件
- ArrayList和LinkedList区别
- Java中的final修饰符
- 通用模板
- 实用的 Python 之 feedparser
- Alternative Thinking(CodeForces
- openCV学习日志(三) 图像的人脸识别
- 机器学习实战学习_____(1)k_临近算法
- Linux进程基本知识
- KazaQ's Socks
- map c++