当前位置: 首页 > 面试题库 >

使用最终方法初始化实例变量

羊舌旭尧
2023-03-14
问题内容

来自Sun文档

通常,您需要将代码放在构造函数中以初始化实例变量。
使用构造函数初始化实例变量有两种选择:初始化块和final方法。

我能理解初始化块的用法。谁能解释一下实例初始化方法的最终方法吗?非最终公开赛员可以完成这项工作。为什么不只是使用它们呢?


问题答案:

您链接到的同一Sun教程中已经描述了该优点:

最终方法不能在子类中覆盖。 有关接口和继承的课程将对此进行讨论。

非最终方法在初始化中很危险的原因是,超类的实例初始化在子类初始化之前执行。因此,如果非最终方法在子类中被覆盖并在超类的初始化期间执行,则它可能正在访问子类的未初始化字段,从而给出错误的结果。

通用规则是(引用有效Java): 构造函数不得直接或间接调用可重写的方法。



 类似资料:
  • 我想了解各种情况下类实例的初始化 在JLS-7第12.5节中,没有提到如何以及何时初始化最终实例变量?如果实例变量被声明为final,是否有人能给我一点参考来理解其行为? 给出的输出如下 在哪里作为 是否将输出作为

  • 下面的示例类无法编译: 此代码的编译错误消息是: 但是,对于包含以下方法的类,Java不会生成任何错误消息: 关于初始化及其要求,为什么Java对最终实例变量和最终局部变量的处理不同?谢谢

  • 本文向大家介绍tensorflow 初始化未初始化的变量实例,包括了tensorflow 初始化未初始化的变量实例的使用技巧和注意事项,需要的朋友参考一下 今日在Stack Overflow上看到一个问如何只初始化未初始化的变量,有人提供了一个函数,特地粘贴过来共大家品鉴: 通过tf.global_variables()返回一个全局变量的列表global_vars, 然后以python列表解析式的

  • 本文向大家介绍Java用Arrays.asList初始化ArrayList实例方法,包括了Java用Arrays.asList初始化ArrayList实例方法的使用技巧和注意事项,需要的朋友参考一下 Java中使用Arrays.asList初始化ArrayList 运行结果为:[[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7,

  • 我试图初始化一个静态最终变量。然而,这个变量是在一个可以抛出异常的方法中初始化的,因此,我需要在一个try-catch块中。 即使我知道变量将在try或catch块上初始化,java编译器也会产生错误 最后一个字段a可能已经被赋值 这是我的代码: 我尝试了另一种方法,直接将其声明为null,但它显示了类似的错误(在这种情况下,这对我来说似乎完全是合乎逻辑的) 不能分配最终字段TestClass.a

  • 问题内容: 在Java中,声明类级别的实例变量而不初始化它会消耗内存吗? 例如:如果不使用初始化内存,是否使用任何内存? 细节: 我有一个巨大的超类,许多不同的子类(不足以拥有自己的超类)扩展了。某些子类不会使用超类声明的每个原语。我可以简单地将这些原语保留为未初始化状态,而仅在必要的子类中对其进行初始化以节省内存吗? 问题答案: 类中定义的所有成员都具有默认值,即使您没有显式初始化它们也是如此,