Таблица методов Java

Я многое узнал о том, как C++ управляет своими виртуальными таблицами при наличии наследования (, множественного, виртуального и т. д. )и о том, как он размещает объекты в объем памяти.

Теперь Java должен заботиться только об одной строке наследования, об отсутствии сокрытия метода экземпляра и т. д., поэтому в этом случае виртуальные таблицы должны быть немного проще. Я знаю, что файлы Classдействуют как «шлюзы» в область методов, где хранятся определения типов, включая, как я полагаю, байт-код метода. Следующие два вопроса приходят мне на ум:

  1. Существует ли вообще какая-либо структура таблицы vtable/method в Java? Как он хранится и связывается с объектами Class?
  2. Как решается вызов наследования/динамического метода? Я имею в виду:

Наличие следующих классов и экземпляров:

class A{ int f(){...} }
class B extends A{ int f(){...} }

A a = new B();
a.f();

f ()в B называется. Является ли A разрешением через Classфайл B правильным указателем метода?

Заранее спасибо за ваши комментарии.

5
задан Joop Eggen 19 April 2012 в 10:33
поделиться