【发布时间】:2011-10-11 19:06:18
【问题描述】:
如果非static 函数被复制到具有该方法的每个对象的堆中,那么为什么Java static 中的所有方法都不是默认的?为什么要这样浪费所有的堆内存?
图解说明会更有助于我理解这一点。
【问题讨论】:
-
就方法而言,
static关键字表示该方法处于类级别,与任何特定实例无关,与内存分配、堆栈或堆内存无关。跨度> -
这个问题引出了另一个问题——你读过任何关于 OOP 技术的文章吗?
-
@Hovercraft Full of Eels- 我认为这个问题在被问到时措辞不佳。问题不是“为什么有非静态方法”,而是“似乎非静态方法比静态方法使用更多空间;为什么这是默认值?”
-
@Andrew Thompson - 阿门!