簡體   English   中英

Java中靜態字段和方法的所有權

[英]Ownership of static fields & methods in Java

我想問一個關於類和“機制”的問題,Java通過這些機制將它們加載到內存中,特別是關於靜態字段和方法的創建。

類可以具有靜態字段和靜態方法,這些靜態字段和方法可以在加載時從類本身調用,而無需創建該類的實例。 它是怎么發生的? 它背后的“機制”是什么?

我知道,當JVM需要加載類時,它會創建一個類對象,其中包含有關如何創建相應類實例的元數據。 但是,當靜態字段和方法也被加載時,例如,它們是否被分配給了類對象,作為回報,它為每個創建的新實例為其創建了一個引用? 這是什么解釋了如何從類(無論是面向對象的語言中意味着什么)及其每個實例中調用靜態方法的原因嗎? 不管我用Google多么努力,都無法找到有關在此特定問題上工作原理的答案。

最重要的是,沒有人知道為什么Java允許從實例訪問靜態字段以及“類本身”嗎? 我的意思是什么概念。

預先感謝大家。

我認為您的意思是類加載和鏈接的概念。 jvmspec解釋得很好

特別是節

5.3。 創建和加載

您可能還想檢查一下jvm體系結構 它可以更好地理解用於存儲類級別信息(例如靜態變量和方法)的方法區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM