Java中,`final`关键字,用来修饰,类、方法、变量

final

Java中,final关键字,用来修饰,类、方法、变量,

  1. 修饰类:
    当一个类被声明为final时,表示该类是最终的,不能被继承,这意味着其他类不能扩展(继承)这个类,例如:
final class FinalClass {
   // 类的内容
}
  1. 修饰方法:
    当一个方法被声明为final时,表示该方法不能被子类重写,这样做可以确保方法的实现不会被修改,例如:

class Parent {
   final void finalMethod() {
	   // 方法的内容
   }
}

  1. 修饰变量:
  • 当一个变量被声明为final时,表示该变量是一个常量,它的值不能被修改,例如:

final int MAX_VALUE = 100;

  • 也可以用于修饰引用变量,表示该引用变量只能指向一个对象,但对象的内容可以改变,例如:

final List<String> list = new ArrayList<>();

  1. 修饰成员变量时

4.1、 因为,成员变量是有默认值的,所以,用final修饰时必须手动赋值,以保证不会再提供默认值

4.2、对于final修饰的员变量,要么在声明的时候直接赋值,要么使用构造方法进行赋值,二者选其一

4.3、对于final修饰的员变量,类中所有重载的构造方法,都必须对final修饰的成员变量进行赋值,不然就会报错

  • 如下

public class MyClass {
    private final int myFinalVar;

    public MyClass() {
        myFinalVar = 10;
    }

    public MyClass(int value) {
        myFinalVar = value;
    }
}

  1. 修饰方法中的参数
    当用final修饰方法的参数时,意味着,这个参数在方法内部不能被修改,如果你想在方法内部修改参数的值,编译器会报错

public class Test {  
    public static void main(String[] args) {  
        int x = 10;  
        changeValue(x);  
        System.out.println(x); // 输出10,而不是20  
    }  
  
    static void changeValue(final int val) {  
        // 下面的代码会导致编译错误  
        // val = 20; // 错误:final变量不能被重新赋值  
    }  
}


使用注意:
  • 对于基本类型的final变量,一旦赋值后就不能再修改其值。

  • 对于引用类型的final变量,一旦引用被赋值后,不能再指向其他对象,但对象本身的内容是可以修改的。

  • final方法不能被子类重写。

  • final类不能被继承。

举个例子:


public class FinalExample {
    final int MAX_VALUE = 100; // 常量
    final List<String> list = new ArrayList<>(); // 引用类型的常量

    final void finalMethod() {
        // 最终方法
    }
}

final class FinalClass {
    // 最终类
}

上述代码中,

MAX_VALUElist 都是被声明为 final 的变量,分别表示一个常量和一个引用类型的常量,

finalMethod是一个被声明为final的方法,

FinalClass是一个被声明为final的类,

你可能感兴趣的:(java,java)