Skip to content

final 关键字

在 Java 中 final 称为终结器,在 Java 里面可以使用 final 定义类、方法和属性。

(1)使用 final 定义的类 不能再有子类 ,即:任何类都不能继承以 final 声明的父类。

java
final class A {		 	// 此类不能够有子类
}
class B extends A { 		// 错误的继承
}
final class A {		 	// 此类不能够有子类
}
class B extends A { 		// 错误的继承
}

本程序中由于 A 类在定义时使用了 final 关键字,这样 A 就不能再有子类了,所以当 B 类继承 A 类时会在编译时出现语法错误。

(2)使用 final 定义的方法不能被子类所覆写。

在一些时候由于父类中的某些方法具备一些重要的特征,并且这些特征不希望被子类破坏(不能够覆写) ,就可以在方法的声明处加上final ,意思是子类不要去破坏这个方法的原本作用。

java
class A {
	public final void fun() {}	// 此方法不允许子类覆写
}
class B extends A {
	public void fun() {}			// 错误:此处不允许覆写
}
class A {
	public final void fun() {}	// 此方法不允许子类覆写
}
class B extends A {
	public void fun() {}			// 错误:此处不允许覆写
}

本程序在 A 类中定义的 fun() 方法上使用了 final 进行定义,这就意味着子类在继承 A 类后将不允许覆写 fun() 方法。

(3)使用 final 定义的变量就成为了常量,常量必须在定义的时候设置好内容,并且不能修改。

java
class A {
	final double GOOD = 100.0; 	// GOOD级别就是100.0
	public final void fun() {
		GOOD = 1.1; 				// 错误:不能够修改常量
	}
}
class A {
	final double GOOD = 100.0; 	// GOOD级别就是100.0
	public final void fun() {
		GOOD = 1.1; 				// 错误:不能够修改常量
	}
}

在定义常量中还有一个更为重要的概念—— 全局常量 ,所谓全局常量指的就是利用了 publicstaticfinal 3 个关键字联合定义的常量,例如:

public static final String STR = "hello";

static 的数据保存在公共数据区,所以此处的常量就是一个公共常量。同时读者一定要记住,在定义常量时 **必须对其进行初始化赋值 ** ,否则将出现语法错误。

用心去做高质量的编程学习内容网站,欢迎star ⭐让更多人发现!