final关键字代表最终、不可改变的。

常见四种用法:

1、可以修饰一个类

/**
*当前类用final关键字进行修饰时,表示这个类不能让任何类进行继承。
*一个类如果用final修饰,该类所有的成员方法都无法进行覆盖重写。
*/
public final class finalClass{
//TODO
}

2、可以用来修饰一个方法

/**
*当用final关键字修饰类中的方法时,这个方法无法被子类覆盖重写
*abstract关键字和final关键字不能同时使用,说明:
* abstract抽象类或抽象方法一定是要进行覆盖重写的,而final关键字修饰的类或方法,是不能* 进行覆盖重写的,两者自相矛盾
*/
public class MyClass{
public final void method(){
//TODO
}
}

3、 可以用来修饰一个局部变量

/**
*使用final修饰局部变量,那么这个变量就不能进行更改。
*对于基本类型变量来说,不可变是指变量当中的数据不可改变。
*对于引用类型变量来说,不可变是指变量的引用地址值中不可改变。
*/
public class MyClass{
public static void main(String[] args){
final int num=1;
//以下为错误写法
//num=2;
/**********************/
final Employee employee = new Employee("小明");
//以下为错误写法,设法引用类型变量的地址值
//employee=new Employee(“小亮”);
//以下为正确写法,引用类型变量的地址值未改变
employee.setName("小亮");
}
}

4、 可以用来修饰一个成员变量

/**
*成员变量具有默认值,如果用final关键字进行修饰后,则必须手动赋值
*final修饰的成员变量,要么使用直接赋值,要么通过构造方法赋值
*/
//直接赋值
public class Person {
private final String name="张三";

public Person() {
}

public String getName() {
return name;
}
}
//构造方法赋值
public class Person {
private final String name;

public Person(String name) {
this.name=name;
}

public String getName() {
return name;
}
}