final关键字(重点)
基本概念
- final本意为"最终的、不可改变的",可以修饰类、成员方法以及成员变量。
使用方式
-
final关键字修饰类体现在该类不能被继承。
- 主要用于防止滥用继承,如:java.lang.String类等。
-
final关键字修饰成员方法体现在该方法不能被重写但可以被继承。
- 主要用于防止不经意间造成重写,如:java.text.Dateformat类中format方法等。
-
final关键字修饰成员变量体现在该变量必须初始化且不能改变。
- 主要用于防止不经意间造成改变,如:java.lang.Thread类中MAX_PRIORITY等。
常量的概念
- 在以后的开发中很少单独使用final关键字来修饰成员变量,通常使用public static final关键字共同修饰成员变量来表达常量的含义,常量的命名规范要求是所有字母都要大写,不同的单词之间采用下划线连。
- public static final double PI = 3.14
public class FinalMemberTest {
// private final int cnt = 1; // 显式初始化
private final int cnt;
/*{
cnt = 2; // 构造块中进行初始化
}*/
public FinalMemberTest() {
cnt = 3; // 构造方法体中进行初始化
}
public static void main(String[] args) {
// 声明FinalMemberTest类型的引用指向该类的对象
FinalMemberTest fmt = new FinalMemberTest();
// 打印成员变量的数值
System.out.println("fmt.cnt = " + fmt.cnt); // 0 1 2 3
}
}
显示结果:fmt.cnt = 3
// ctrl+shift+/ 进行选中内容的多行注释 ,再来一次取消注释
// ctrl+/ 进行当前行的单行注释 ,再来一次取消注释
public /*final*/ class FinalClass {
public final void show() {
System.out.println("FinalClass类中的show方法!");
}
}
public class SubFinalClass extends FinalClass {
/*@Override
public void show() {
super.show();
}*/
public static void main(String[] args) {
SubFinalClass sfc = new SubFinalClass();
sfc.show();
}
}
显示结果:FinalClass类中的show方法!