Java 基础之 final 的用法

658 阅读1分钟

前言

final是java中的关键字,它是一个修饰符,可以修饰变量、方法和类。

目录

  • final修饰变量
  • final修饰方法
  • final修饰类

一、final修饰变量

  1. 被final修饰的变量不可改变,但仅仅是引用的地址不可改变,不代表引用的对象不可变。例如:
final int[] array={1,2,3,4,5};
array[0]=0;
for(int t:array){
    System.out.println(t);
}
以上代码的执行结果为:
0
2
3
4
5

以上代码中:array引用的地址没有改变,但引用的对象发生了变化。

  1. 被final修饰的变量如果是类的成员变量,则必须在定义时就初始化,否则如果没有在定义时初始化,则必须在构造函数中初始化(如果有多个构造函数,则每个构造函数都得将其初始化),例如:
public class Person {
    private String name;
    private final int age;
    
    public Person(){        
        age=1;
    }
    
    public Person(String name) {
        this.name=name;     
        age=2;
    }
    
    public Person(String name,int age){
        this.name=name;
        this.age=age;
    }
}

二、final修饰方法

  1. 被final修饰的方法不能被子类重写,但可以被重载
  2. 被final修饰的方法必须要有实现代码,即final不能修饰抽象方法

三、final修饰类

  1. 被final修饰的类不能被继承,也就是说被final修饰的类不能有子类
  2. 根据上一条可得出,final不可修饰抽象类或接口。因为被final修饰的类不能被继承,所以final修饰的抽象类毫无意义,因此java规定了final不能修饰抽象类或接口,否则编译器将报错