Java的final修饰符

开发工具与关键技术:MyEclipse 10、Java语法
作者:邓婵
撰写时间:2019年 5月 10日

final:修饰符(关键字)有三种用法:1.类被声明为final意味着它不能再派生出新的子类,即不能被继承2.将变量声明为final可以保证在使用中不被改变;被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改3.被声明为final的方法不能在子类中被重写。

一、用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次且它的值无法被改变。
成员变量和局部变量的区别:
成员变量:是定义在类中,方法体之外的变量,该变量在创建对象时实例化。成员变量可以被类中的方法,构造方法和特定的类语句块访问。
局部变量:声明在方法体,构造方法和语句块中,方法执行时被创建,执行完成后被销毁。访问修饰符不可以用于局部变量中。局部变量只在声明它的方法,构造方法和语句块中被访问。

final 修饰的实例变量必须在非静态初始块、声明该实例变量或者构造器中指定初始值,而且只能在三个地方的其中之一指定,如果已经指定就不能再次指定。
例子:
Java的final修饰符
final 修饰的类变量必须在静态初始块或者声明该实例变量中指定初始值,而且只能在两个地方的其中之一指定。
例子:
Java的final修饰符

二、用来修饰局部变量,表示在变量的生存期中它的值不能被改变。
final修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值在后面赋值。
例子:
Java的final修饰符

错误的写法:
说明:因为这里不能对final修饰的形参进行赋值的,它会在编写代码的时候发生错误。

public void test(final int num){
	num = 10;
}

三、修饰方法,表示该方法无法被重写。
例子:

public class FinalMethod {
	public final void testMethod(){		
	}
}
class SubClass extends FinalMethod{
public void testMethod(){		
}
}

说明:首先定义一个final修饰的方法,然后再对这个方法进行重写,但因为由final修饰的类是不能被重写的,它在编辑代码的时候会报错,是无法被重写的。

四、修饰类,表示该类无法被继承。
例子:

public final class FinalClass {
}
class SubClass extends FinalClass{	
}

说明:首先定义一个由final修饰的类,然后再继承这个类,但这里SubClass是无法继承 FinalClass的。因为由final 修饰的类是不可以被继承,还有String 类是final类,也是不可以被继承的,它在编辑代码的时候会报错。