如何正确使用java finnal

avatar
作者
筋斗云
阅读量:0

在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,因此它们的行为不能被修改。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!