温馨提示×

如何正确使用java finnal

小樊
81
2024-09-25 19:02:32
栏目: 编程语言

在Java中,final关键字用于限制类、方法或变量的行为

  1. 用于类:当一个类被声明为final时,表示该类不能被继承。这通常用于保护类的设计,确保不会被其它类覆盖。
public final class MyFinalClass {
    // 类的实现
}
  1. 用于方法:当方法声明为final时,表示该方法不能被子类覆盖(即子类不能重新实现这个方法)。这有助于确保方法的行为在整个类继承体系中保持一致,子类不能对其进行修改。
public class MyBaseClass {
    public final void myFinalMethod() {
        // 方法的实现
    }
}
  1. 用于变量

    • 当声明基本数据类型的变量时,final意味着该变量是一个常量,其值在初始化后不能被改变。
    java`public class MyClass {
        public final int MY_CONSTANT = 10;
        // 类的其它部分
    }`
    * 当声明引用类型的变量时,`final`意味着该变量的引用不能指向其它对象,但引用的对象的内容仍然可以改变。
    
    
    

    javapublic class MyClass { public final MyOtherClass myFinalObject = new MyOtherClass(); // 类的其它部分 }

  2. 注意事项

    • final变量必须在声明时或构造函数中被初始化,因为它们不能被重新赋值。
    • 如果final变量是类的成员变量,并且类有一个可访问的构造函数,那么final变量必须在构造函数中被初始化。
    • final方法不能被子类覆盖,但子类可以继承其实现。
  3. 使用场景

    • 当你希望确保某个类不被继承时,可以使用final关键字。
    • 当你希望确保某个方法的行为在整个类继承体系中保持一致,并且不希望子类对其进行修改时,可以使用final关键字。
    • 当你希望定义一个常量时,可以使用final关键字(对于基本数据类型)或将其引用设置为final(对于引用类型)。
  4. 示例

public class MyClass {
    public final int CONSTANT = 100;
    
    public final void myFinalMethod() {
        System.out.println("This is a final method.");
    }
    
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        System.out.println(obj.CONSTANT); // 输出 100
        // obj.CONSTANT = 200; // 编译错误,因为 CONSTANT 是 final 的
        obj.myFinalMethod(); // 输出 "This is a final method."
        // obj.myFinalMethod = () -> System.out.println("I am not a final method."); // 编译错误,因为 myFinalMethod 是 final 的
    }
}

在这个示例中,CONSTANT变量和myFinalMethod方法都被声明为final,因此它们的行为不能被修改。

0