gpt4 book ai didi

java - Java如何调用对象的函数?

转载 作者:行者123 更新时间:2023-11-29 07:51:07 24 4
gpt4 key购买 nike

据我之前的了解,.java 文件编译成.class 文件后,每个对象只是删除后的Object。比如

Foo f = new Foo();

编译为.class文件,反编译为:

Object f = new Foo();

那么JRE在运行时是如何调用一个对象的函数的呢?函数存储在内存中的什么位置?物体内部?或者使用类结构的层次结构并查找层次结构?

最佳答案

根据Java specwikipedia

There are 10 basic sections to the Java Class File structure:

  • Magic Number: 0xCAFEBABE
  • Version of Class File Format: the minor and major versions of the class file
  • Constant Pool: Pool of constants for the class
  • Access Flags: for example whether the class is abstract, static, etc.
  • This Class: The name of the current class
  • Super Class: The name of the super class
  • Interfaces: Any interfaces in the class
  • Fields: Any fields in the class
  • Methods: Any methods in the class
  • Attributes: Any attributes of the class (for example the name of the sourcefile, etc.)

在运行时,检索对象的类型,检查其类文件(或更确切地说 virtual method table )以查找调用方法的实现。如果该类没有这样的实现,则检查父类(从父类(super class)条目中检索),依此类推,如果没有找到则最终失败。

关于java - Java如何调用对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com