【问题标题】:How and where are final static methods and variables stored in java?java中最终的静态方法和变量如何以及在哪里存储?
【发布时间】:2015-03-25 04:27:23
【问题描述】:
class X
{

final static void show()
{

  System.out.println("Show");

}
}
class Y extends X
{

  public static void main(String s[])
  {
     new Y().show();
  }
}

内存在哪里以及如何分配给最终静态方法,以及它们是如何访问的?

【问题讨论】:

  • 什么意思?内存分配给方法,除非 Java 加载它们所在的类文件。
  • 投票重新打开,因为这看起来不像重复 - 这个问题是关于覆盖静态方法的,而这个问题不是(虽然我不确定它是什么 关于...)
  • 我只是想知道如果静态成员函数是final的,JVM内存在哪里分配,以及它们是如何访问的
  • 你是指参数和局部变量的内存吗?

标签: java static


【解决方案1】:

当你将静态方法设为final时,它隐藏在继承类中。 你可以在http://www.coderanch.com/how-to/java/OverridingVsHiding找到一个不错的解释

【讨论】:

  • 问题是“内存在哪里以及如何分配给最终静态方法,以及它们是如何访问的?”。也许这应该是评论,而不是答案。
  • 谢谢,但我想知道静态最终方法和变量的内存架构
【解决方案2】:

当您使用修饰符“final”创建方法时,您正在修改该方法,使其不能被覆盖或隐藏。

因此,如果您出于某种原因创建另一个类来扩展您的 X 类(称为继承),则不允许您修改或覆盖您的 show() 方法。此外,任何其他类都可以访问该方法。

如果你想要更深入的解释,我建议阅读 Java API:https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html

【讨论】:

    猜你喜欢
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多