首页 > Java > java教程 > Java的`final`关键字如何影响对象修改?

Java的`final`关键字如何影响对象修改?

DDD
发布: 2024-12-15 18:04:14
原创
433 人浏览过

How Does Java's `final` Keyword Affect Object Modification?

Java 中的“final”关键字如何工作(修改对象)

在 Java 中,“final”关键字用于声明具有不可变值的变量。但是,您可能会遇到仍然可以修改分配给最终变量的对象的情况。此行为需要对 Final 的功能有更深入的了解。

变量最终性

实例变量:

  • Final 实例变量可以在构造函数。
  • 一旦初始化,它们就不能重新分配给不同的对象引用。
  • 但是,对象的内容(例如,如果它是集合)仍然可以修改。

静态变量:

  • 最终静态变量必须在类声明中初始化
  • 它们不能在构造函数或方法中初始化。

示例

考虑以下代码:

import java.util.ArrayList;
import java.util.List;

class Test {
  private final List foo;

  public Test() {
      foo = new ArrayList();
      foo.add("foo"); // Modification-1
  }

  public static void main(String[] args) {
      Test t = new Test();
      t.foo.add("bar"); // Modification-2
      System.out.println("print - " + t.foo);
  }
}
登录后复制
  • 修改-1: 最终实例变量 foo 被初始化为新的构造函数中的 ArrayList 对象。
  • Modification-2: add() 方法用于修改 foo 列表的内容,这是允许的。

Java 1.8 中的有效 Final

Java 1.8 引入了“有效最终”变量的概念。这些是局部变量,在嵌套类或匿名内部类中实际上是不可变的。虽然它们不使用“final”关键字,但无法重新分配。

子类化和覆盖

  • 最终类:无法子类化。
  • 最终方法: 不能被覆盖(在子类)。
  • 超类中的最终方法:可以在子类中重写。

以上是Java的`final`关键字如何影响对象修改?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板