final在java中的作用

在Java中,final 是一个关键字,用于修饰类、方法和变量,表示“不可更改”的含义。

1、final 修饰变量

  • 表示该变量一旦被赋值后,不能被重新赋值(即常量)。

  • 如果是基本类型(如 intdouble),值不能改变。

  • 如果是引用类型(如对象、数组),引用不 能指向其他对象,但对象内部的状态可以修改(除非对象本身是不可变的,如 String)。

final int x = 10;
x = 20; // 编译错误,不能重新赋值

final List list = new ArrayList<>();
list.add("Hello"); // 允许,可以修改对象内部状态
list = new ArrayList<>(); // 编译错误,不能重新赋值

2、final修饰方法

  • 表示该方法不能被子类重写(Override)

  • 用于防止子类修改方法的行为。

class Parent {
    final void show() {
        System.out.println("Parent show");
    }
}

class Child extends Parent {
    void show() { // 编译错误,不能重写 final 方法
        System.out.println("Child show");
    }
}

3、final修饰类

  • 表示该类不能被继承(即没有子类)。

  • 例如,Java 的 String 类就是 final 的,防止被继承和修改。

final class MyFinalClass { }

class SubClass extends MyFinalClass { // 编译错误,不能继承 final 类
}

4、应用场景

  • 常量定义(final 变量)。

  • 防止方法被重写(如工具类中的方法)。

  • 防止类被继承(如安全敏感类或工具类)。

你可能感兴趣的:(java,开发语言)